나는 노드에서 시계를 유지할 필요가있는 프로젝트에서 일하고 있는데 그 노드도 아이들이다. PathCache를 사용해 보았지만 여기서 아이들 아이들을 지켜 볼 방법이 확실하지 않습니다.큐레이터를 사용하여 ZooKeeper의 자손 노드에서 이벤트를 보는 방법?
여기 내 루트 노드는 - "/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/test2"
,
"/my/test/test3"
,
"/my/test/test1"
로 새로운 노드를 추가하고 때마다
. 그러나 "/my/test/test1"
또는 "/my/test/test2"
에 새 노드를 추가하는 경우 아무 시계도 트리거되지 않으며 코드를 추가하는 방법도 잘 모르겠습니다. 어떤 생각을 어떻게 할 수 있습니까? 누군가가 ... 과거에 이런 짓을했다 그래서 어떤 예를 나에게 큰 도움이 될 것입니다 경우
다음은
는"/my/test"
아이들하지만
"/my/test/test1"
등의 아니라 어린이를위한 잘 작동 내 코드입니다 .. 수 있음
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);
}
사람이 내 사용 사례에 대해 이것에 대한 간단한 예제를 제공 할 수 - 등
다음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 방법이다? 최근 큐레이터 2.4.0을 사용하고 있습니다.
당신은''/ my/test ''에 추가 된 모든 아이들을 지키고 있어야한다고 생각합니다. – weima