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 に答える