1

我正在尝试 在BeforeAll方法中使用QuorumPeerMain.runFromConfig启动一个 zookeeper 节点,以便我可以在测试中使用它(它嵌入在同一个 JVM 中)。我收到 Invalid configuration, only one server specified (ignoring) 后跟 java.lang.RuntimeException: My id 0 not in the peer list

我的配置是:

dataDir=/tmp/zookeeper
clientPort=2181
maxClientCnxns=0
server.0=127.0.0.1:2888:3888

最后一行应该引用节点本身,在“无效配置”错误消息之后被丢弃,然后 Zookeeper 抛出异常,因为它的 id 不在列表中。如果 zookeeper 没有丢弃它,它的 id 0 就会在列表中。如何避免此 RuntimeException?

或者,有没有更好的方法从 BeforeAll 运行 zookeeper?

4

2 回答 2

2

如配置所示,ID 必须是唯一的,并且在 1 到 255 之间。您设置的 ID 为 0,该 ID 不在此集合中,导致此错误。

文档:https ://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkMulitServerSetup

于 2018-09-04T09:42:34.130 回答
0

试试 Apache Curator 测试框架。使用起来更舒服。有关详细信息,请参阅:TestingServer javadoc。

您可以在github中找到测试示例

于 2017-06-02T21:48:42.913 回答