• Java客户端_zkclient库操作Zookeeper


    使用zookeeper遇到问题:

    • 重复注册watcher
    • session失效重连
    • 异常处理(删除节点不能有子节点,新增节点必须有父节点等)

    zkclient是Github上一个开源的Zookeeper客户端,在Zookeeper原生 API接口之上进行了包装,是一个更加易用的Zookeeper客户端。同时Zkclient在内部实现了诸如Session超时重连,Watcher反复注册等功能,从而提高开发效率。

    添加依赖

    1. <dependency>
    2. <groupId>com.101tec</groupId>
    3. <artifactId>zkclient</artifactId>
    4. <version>0.10</version>
    5. </dependency>

    创建会话

    1. String connStr = "192.168.154.128:2181";
    2. ZkClient zk = new ZkClient(connStr);

    创建节点

    String res = zk.create("/root", "hgy", CreateMode.PERSISTENT);

    修改节点数据

    zk.writeData("/root", "hgy");

    获取节点数据

    String res = zk.readData("/root");
    

    删除节点

    zk.delete("/root");

    注册数据监听

    1. zk.subscribeDataChanges("/root/ghz", new IZkDataListener() {
    2. @Override
    3. public void handleDataDeleted(String arg0) throws Exception {
    4. System.err.println("数据删除:" + arg0);
    5. }
    6. @Override
    7. public void handleDataChange(String arg0, Object arg1) throws Exception {
    8. System.err.println("数据修改:" + arg0 + "------" + arg1);
    9. }
    10. });

    注册节点监听

    1. zk.subscribeChildChanges("/root", (arg0, arg1) -> {
    2. System.err.println("子节点发生变化:" + arg0);
    3. arg1.forEach(f -> {
    4. System.out.println("content:" + f);
    5. });
    6. });

  • 相关阅读:
    统一消息分发中心设计
    Windoes命令CMD&powershell操作
    GIC/ITS代码分析(8)中断应用实例之SGI中断
    Java-运算符
    Qt 视图框架QGraphicsItem
    项目进度管理
    C语言源程序解析程序
    实时操作系统(RTOS)指南
    前端代码静态检测工具汇总
    Github Actions 自动同步到 Gitee
  • 原文地址:https://blog.csdn.net/weixin_68967484/article/details/133203526