zookeeper监听集群节点的实现zkclient组件实现方案(Java版)

ZooKeeper Watcher 机制

  1. client 向zookeeper 注册监听
  2. client注册的同时会存储一个WatchManager对象
  3. 向zookeeper发生改变则notification client 并发送一个WatchManager对象,然后client再更新该对象
java 复制代码
package com.jacky.zk.demo;

import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.ZkClient;

import java.util.List;

/*
* 使用监听器
* */
public class Get_child {
    public static void main(String[] args) throws InterruptedException {
        //    获取到zkClient
        final ZkClient zkClient= new ZkClient("127.0.0.1:2181");
        //    zkClient 对指定目录进行监听(不存在的目录)
        /*
        	ps: 可以监听的事件类型:
            NodeCreated:当ZNode被创建时触发。
            NodeDeleted:当ZNode被删除时触发。
            NodeDataChanged:当ZNode的数据内容发生改变时触发。
            NodeChildrenChanged:当ZNode的子节点列表发生更改时触发(添加或删除子节点)。
            ConnectionStateChanged:与ZooKeeper服务器的连接状态发生变化时触发。   
        * */
        zkClient.subscribeChildChanges("/zk-jk", new IZkChildListener() {
		//  回调
            @Override
            public void handleChildChange(String s, List<String> children) throws Exception {
                System.out.println("error"+children);
            }
        });
        zkClient.createPersistent("/zk-jk");
        Thread.sleep(2000);
        zkClient.createPersistent("/zk-jk/cls-jk");
        Thread.sleep(2000);
        zkClient.deleteRecursive("/zk-jk/cls-jk");
        Thread.sleep(2000);
        zkClient.delete("/zk-jk");
        Thread.sleep(Integer.MAX_VALUE);
    }
}
相关推荐
IKUN家族8 小时前
Spring MVC(一)
java·spring·mvc
老马识途2.010 小时前
关于跨域问题的总结
java·前端
都叫我大帅哥10 小时前
Java日期时间三十年战争:从Date考古到LocalDateTime革命,以及数据库与前端的那点事儿
java
Muscleheng10 小时前
SpringBoot 集成 DeepSeek 实现 RAG 文档问答
java·spring boot·ai·springai
2501_9364156911 小时前
可变参数&综合练习&斗地主游戏
java·windows·游戏
极客先躯12 小时前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试
xqqxqxxq13 小时前
Java Socket 多人聊天室(私聊+群聊)技术笔记(V4版本)
java·网络·笔记
wang090713 小时前
自己动手写一个spring之aop_1
java·后端·spring
国科安芯13 小时前
FreeRTOS RISC-V 浮点上下文切换移植:在 IAR 工程中完整保存 FPU 寄存器
java·开发语言·单片机·嵌入式硬件·算法·系统架构·risc-v
deng120414 小时前
【Thread类的用法(1)-- Thread类的基本用法】
java·java-ee