如何避免" RuntimeException:我的id 0不在对等列表中#34;什么时候启动嵌入式Zookeeper?

时间:2017-06-02 20:20:25

标签: java unit-testing apache-zookeeper junit5

我尝试使用QuorumPeerMain.runFromConfig启动zookeeper节点 在BeforeAll方法中,以便我可以在测试中使用它 (它嵌入在同一个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抛出一个Exception,因为它的id不在列表中。如果zookeeper没有丢弃它,它的id,0,将在列表中。如何避免此RuntimeException?

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

2 个答案:

答案 0 :(得分:0)

尝试Apache Curator测试框架。与他人一起工作会更舒服。有关详细信息,请参阅:TestingServer javadoc。

您可以在github

中找到测试示例

答案 1 :(得分:0)

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

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