ノードの監視を維持する必要があるプロジェクトに取り組んでおり、そのノードの子も同様です。PathCache を使用してみましたが、ここで子の子を監視する方法がわかりませんか?
ここに私のルート ノードが"/my/test"
あります。以下のコードを使用して、そのノードを監視しています。私がやりたいことは、"/my/test"
znode を監視することです。これらのノードがルート ノードに追加されたとします。
"/my/test/test1"
"/my/test/test2"
"/my/test/test3"
次に、通知を受け取る必要があります(この部分までは機能させることができます)が、新しいノードが追加、更新、または削除された場合は"/my/test/test1"
、通知も受け取る必要があります。これは、方法を理解できない部分ですそれを機能させます。"/my/test/test2"
"/my/test/test3"
、"/my/test"
などに新しいノードを追加するたびに、以下のコードを使用してウォッチがトリガーされます。しかし、新しいノードをまたはに追加すると、監視がトリガーされず、そのためのコードを追加する方法もわかりませんか? これを行う方法はありますか?"/my/test/test1"
"/my/test/test2"
"/my/test/test3"
"/my/test/test1"
"/my/test/test2"
誰かが過去にこれをやったことがあるかもしれません..だからどんな例でも私にとって大きな助けになるでしょう..
以下は、子供に対しては正常に機能しますが、など"/my/test"
の子供に対しては機能しない私のコードです。"/my/test/test1"
private static final String PATH = "/my/test";
public static void main(String[] args) {
CuratorFramework client = null;
PathChildrenCache cache = null;
try {
client = CuratorClient.createSimple("localhost:2181");
client.start();
// in this example we will cache data. Notice that this is optional.
cache = new PathChildrenCache(client, PATH, true);
cache.start();
addListener(cache);
for(;;) {
try {
Thread.sleep(50000);
} catch(InterruptedException e) {
}
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
以下は私の addListener メソッドです -
private static void addListener(PathChildrenCache cache) {
PathChildrenCacheListener listener = new PathChildrenCacheListener() {
public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception {
switch (event.getType()) {
case CHILD_ADDED: {
System.out.println("Node added: " + ZKPaths.getNodeFromPath(event.getData().getPath()));
break;
}
case CHILD_UPDATED: {
System.out.println("Node changed: " + ZKPaths.getNodeFromPath(event.getData().getPath()));
break;
}
case CHILD_REMOVED: {
System.out.println("Node removed: " + ZKPaths.getNodeFromPath(event.getData().getPath()));
break;
}
default:
break;
}
}
};
cache.getListenable().addListener(listener);
}
私のユースケースでこれの簡単な例を誰かが提供できますか? 最近リリースされた Curator 2.4.0 を使用しています。