4

我在我的项目中使用 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);

谢谢,

4

1 回答 1

5

Watcher如果连接发生变化,您应该通知您。如果是这样,EventTypeWatchedEvent将是None,以此为契机重新启动您的手表:

@Override
public void process(WatchedEvent event) {
    if (event.getType == Event.EventType.None && event.getState() == Event.KeeperState.SyncConnected){
        framework.getChildren().usingWatcher(this).forPath(path);
...
于 2014-11-07T19:46:23.543 回答