ZooKeeperを使用すると、子孫zノードのすべてのイベントを監視できますか?例えばZooKeeperのすべての子孫ノードでイベントを監視することはできますか?
私が持っている場合:
(/)
/\
(/a) (/b)
/ \
(/c) (/d)
、/ B、/ Cおよび/ D /への変更のためのルートを監視する方法はありますか?
ZooKeeperを使用すると、子孫zノードのすべてのイベントを監視できますか?例えばZooKeeperのすべての子孫ノードでイベントを監視することはできますか?
私が持っている場合:
(/)
/\
(/a) (/b)
/ \
(/c) (/d)
、/ B、/ Cおよび/ D /への変更のためのルートを監視する方法はありますか?
これは古い質問です。私はちょうど私のような他の人のためにここに投稿します。
私はこれも探しています。 @sbridgesの先端に続いて、私はこのようにすることができると思う。
PathChildrenCache pathcache = new PathChildrenCache(client, "/some/path", true);
PathChildrenCacheListener listner1 = new PathChildrenCacheListener() {
Map<String, PathChildrenCache> listener2s = new HashMap<String, PathChildrenCache>();
@Override
public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception {
String path = event.getData().getPath();
if(event.getType() == Type.CHILD_ADDED) {
PathChildrenCache cache2 = new PathChildrenCache(client, path, true);
cache2.getListenable().addListener(this);
cache2.start();
listener2s.put(path, cache2);
}
else if(event.getType() == Type.CHILD_REMOVED) {
PathChildrenCache cache2 = listener2s.remove(path);
if(cache2 != null) cache2.close();
}
System.out.println("" + Thread.currentThread().getId() + "\t" + event);
}
};
pathcache.getListenable().addListener(listner1);
何か問題が見つかった場合は、教えてください。
通知(CHILD_ADDED)の取得と子供への腕時計の登録との間で、子供のイベントを緩和することができます – dk14