我有一个独立的zookeeper服务器正在运行。
client = CuratorFrameworkFactory.newClient(zkHostPorts, retryPolicy);
client.start();
assertThat(client.checkExists().forPath("/")).isNotNull(); // working
listener = new LeaderSelectorListenerAdapter() {
@Override
public void takeLeadership(CuratorFramework client) throws Exception {
System.out.println("This method is never called! :( ");
Thread.sleep(5000);
}
};
String path = "/somepath";
leaderSelector = new LeaderSelector(client, path, listener);
leaderSelector.autoRequeue();
leaderSelector.start();
我正在成功连接服务器,定义一个监听器并开始领导选举。
注意:只有一个客户。
但我的客户端应用程序永远不会发挥领导作用。我无法弄清楚我做错了什么。这也是一个简单的单一客户端场景。客户不应该是领导者
修改 如果我使用curator-test库中的TestingServer而不是启动我的Zookeeper服务器,如下面的那样 -
TestingServer server = new TestingServer();
client = CuratorFrameworkFactory.newClient(server.getConnectString(), retryPolicy);
...
这是否意味着我的zookeeper服务器出了问题。 这是我的zoo.cfg -
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper/ex1
clientPort=2181
此外,服务器似乎工作正常,因为我能够使用cli连接到它并且能够创建/删除zNode。