Zookeeper 策展人观察者未收到任何事件
Zookeeper curator watcher not receiving any events
我一直在尝试将 apache curator 用于 zookeeper,但无法取得进展。我所寻找的只是在 zk 节点上设置一个观察者并监听该特定节点上的所有数据更改。我写了一个简单的程序来尝试这个,但我没有收到任何事件。这是我的代码:
CuratorFramework curator = new ZookeeperClient(zkHosts).getConnection();
CompletableFuture.runAsync(() -> {
CuratorWatcher curatorWatcher = event -> System.out.println("Watched event: " + event);
try {
curator.getChildren().usingWatcher(curatorWatcher).forPath(NODE_PATH);
} catch (Exception e) {
e.printStackTrace();
}
});
CompletableFuture.runAsync(() -> {
try {
curator.setData().forPath(NODE_PATH, "randomdata1".getBytes());
curator.setData().forPath(NODE_PATH, "randomdata2".getBytes());
} catch (Exception e) {
e.printStackTrace();
}
});
感谢您的帮助!
在 Zookeeper 中,getData() 和 exists() 设置数据监视。 getChildren() 设置 child 个手表;有关详细信息,请参阅 ZooKeeper Watches
您应该在第一个 runAsync()
中使用 curator.getData()
而不是 curator.getChildren()
,因为您在第二个 runAsync()
中使用 setData()
。
如果你想保留curator.getChildren()
,那么你应该在NODE_PATH
下添加一个新的child用于测试
我一直在尝试将 apache curator 用于 zookeeper,但无法取得进展。我所寻找的只是在 zk 节点上设置一个观察者并监听该特定节点上的所有数据更改。我写了一个简单的程序来尝试这个,但我没有收到任何事件。这是我的代码:
CuratorFramework curator = new ZookeeperClient(zkHosts).getConnection();
CompletableFuture.runAsync(() -> {
CuratorWatcher curatorWatcher = event -> System.out.println("Watched event: " + event);
try {
curator.getChildren().usingWatcher(curatorWatcher).forPath(NODE_PATH);
} catch (Exception e) {
e.printStackTrace();
}
});
CompletableFuture.runAsync(() -> {
try {
curator.setData().forPath(NODE_PATH, "randomdata1".getBytes());
curator.setData().forPath(NODE_PATH, "randomdata2".getBytes());
} catch (Exception e) {
e.printStackTrace();
}
});
感谢您的帮助!
在 Zookeeper 中,getData() 和 exists() 设置数据监视。 getChildren() 设置 child 个手表;有关详细信息,请参阅 ZooKeeper Watches
您应该在第一个 runAsync()
中使用 curator.getData()
而不是 curator.getChildren()
,因为您在第二个 runAsync()
中使用 setData()
。
如果你想保留curator.getChildren()
,那么你应该在NODE_PATH
下添加一个新的child用于测试