什么是zookeeper事件通知
zookeeper事件通知可以监听每个节点的变化。如:删除 修改 添加操作
zookeeper的事件通知方式有
监听数据变化 监听状态变化 监听子节点变化
示例代码
public class TestV1 {
//参数1 连接地址
private static final String ADDR = "192.168.100.128:2181";
// 参数2 zk超时时间
private static final int TIMEOUT = 5000;
// 计数器
private static CountDownLatch countDownLatch = new CountDownLatch(1);
public static void main(String[] args) throws InterruptedException {
// 创建我们的zk连接
ZkClient zkClient = new ZkClient(ADDR, TIMEOUT);
String parentPath = "/jyb-service";
// 监听节点发生的变化 监听子节点是否有发生变化 如果发生变化都可以获取到回调通知
zkClient.subscribeChildChanges(parentPath, new IZkChildListener() {
@Override
public void handleChildChange(String s, List<String> list) throws Exception {
System.out.println("节点信息:" + s + ",发生了变化");
list.forEach((t) -> System.out.println(t));
}
});
// 监听节点值是否发生变化
/* zkClient.subscribeDataChanges(parentPath , new IZkDataListener() {
@Override
// 节点的内容是否发生变化
public void handleDataChange(String s, Object o) throws Exception {
System.out.println("key:" + s + ",value:" + o);
}
@Override
// 监听该节点是否被删除
public void handleDataDeleted(String s) throws Exception {
System.out.println("节点信息被删除:" + s);
}
});
Thread.sleep(3000);
//修改值内容
zkClient.writeData(parentPath, "jyb-3535");*/
for (;;){}
// zkClient.close();
}
}
网友评论