Apache Curator在重新连接后丢失了所有手表

时间:2014-09-15 14:03:13

标签: apache-zookeeper apache-curator

我在我的项目中使用Apache Curator。在CuratorFramework失去与ZooKeeper服务器的连接后,它会自动重新连接,但它似乎丢失了我设置的所有手表,而且我不再收到任何通知。如果未删除并重新启动连接,手表将按预期工作。

这是策展人的错误还是我做错了什么? 设置手表的代码如下:

CuratorFramework framework = CuratorFrameworkFactory.newClient(connectString, SESSION_TIMEOUT_MS, 0, new ExponentialBackoffRetry(CONNECT_TIMEOUT_MS, CONNECT_RETRY_COUNT));
framework.start();
framework.getChildren().usingWatcher(watcher).forPath(path);

感谢,

1 个答案:

答案 0 :(得分:4)

如果连接发生变化,您的Watcher应通知您。如果是这样,EventType上的WatchedEvent将为None,请将其作为重启手表的机会:

@Override
public void process(WatchedEvent event) {
    if (event.getType == Event.EventType.None && event.getState() == Event.KeeperState.SyncConnected){
        framework.getChildren().usingWatcher(this).forPath(path);
...