监听 Znode 节点

来自姬鸿昌的知识库
跳到导航 跳到搜索
package org.example;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.recipes.cache.ChildData;
import org.apache.curator.framework.recipes.cache.NodeCache;
import org.apache.curator.framework.recipes.cache.NodeCacheListener;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;

import java.nio.charset.StandardCharsets;

public class Demo3 {

    CuratorFramework cf = ZkUtil.cf();

    @Test
    public void listen() throws Exception {
        //1.创建 NodeCache 对象,指定要监听的 Znode
        NodeCache nodeCache = new NodeCache(cf, "/qf");
        nodeCache.start();

        //2.添加一个监听器
        nodeCache.getListenable().addListener(new NodeCacheListener() {
            @Override
            public void nodeChanged() throws Exception {
                ChildData childData = nodeCache.getCurrentData();
                byte[] data = childData.getData();
                Stat stat = childData.getStat();
                String path = childData.getPath();
                System.out.println("监听的节点是:" + path);
                System.out.println("节点现在的数据是:" + new String(data, StandardCharsets.UTF_8));
                System.out.println("当前节点的状态是:" + stat);
            }
        });
        System.out.println("开始监听......");
        //3.System.in.read();
        System.in.read();

    }
}


./zkCli.sh 命令行

[zk: localhost:2181(CONNECTED) 5] set /qf qqqqq
[zk: localhost:2181(CONNECTED) 6] set /qf ppppp
[zk: localhost:2181(CONNECTED) 7]


IntelliJ IDEA 控制台

开始监听......
监听的节点是:/qf
节点现在的数据是:qqqqq
当前节点的状态是:8589934594,17179869215,1660698163875,1660716077866,2,0,0,0,5,0,8589934594

监听的节点是:/qf
节点现在的数据是:ppppp
当前节点的状态是:8589934594,17179869217,1660698163875,1660716102689,3,0,0,0,5,0,8589934594