zkClient入门

常用使用方法:
1.创建客户端连接
new ZKConnection(addrs,timeout);

public class ZkClientBase {
static final String CONNECT_ADDR = “192.168.1.104:2181,192.168.1.105:2181,192.168.1.107:2181”;
static final int SESSION_TIMEOUT = 5000;

public static void main(String[] args) throws InterruptedException {  
    ZkClient zkClient = new ZkClient(new ZkConnection(CONNECT_ADDR), SESSION_TIMEOUT);  
}  

}

2.创建与删除节点
1.create和delete方法
zkClient.createEphemeral(“/temp”); //创建临时节点,会话失效后删除
zkClient.createPersistent(“/super/c1”, true);
//创建持久化节点,true表示如果父节点不存在则创建父节点
Thread.sleep(10000);
zkClient.delete(“/temp”); //删除节点
zkClient.deleteRecursive(“/super”);//递归删除,如果该节点下有子节点,会把子节点也删除

3.设置与读取节点内容
zkClient.createPersistent(“/super”, “1234”); //创建并设置节点的值
zkClient.createPersistent(“/super/c1”, “内容一”);
List children = zkClient.getChildren(“/super”);
for(String child : children) {
System.out.print(child + “:”);
String childPath = “/super/“ + child;
String data = zkClient.readData(childPath);
}

4.更新和判断节点是否存在
zkClient.writeData(“/super/c1”, “新内容”); //修改指定节点的值
String cData = zkClient.readData(“/super/c1”);
System.out.println(cData);
System.out.println(zkClient.exists(“/super/c1”)); //判断指定节点是否存在

5.监听相关
subscribeDataChanges方法(只监听节点数据的变化)
public class SubscribeDataChanges {
static final String CONNECT_ADDR = “192.168.1.104:2181”;
static final int SESSION_TIMEOUT = 50000;

public static void main(String[] args) throws InterruptedException {  
    ZkClient zkClient = new ZkClient(new ZkConnection(CONNECT_ADDR, SESSION_TIMEOUT));  
    zkClient.**subscribeDataChanges**("/super", new IZkDataListener() {  
        @Override  
        public void handleDataChange(String s, Object o) throws Exception {  
            System.out.println("变更节点为:" + s + ",变更数据为:" + o);  
        }  

        @Override  
        public void handleDataDeleted(String s) throws Exception {  
            System.out.println("删除的节点为:" + s);  
        }  
    });  
    zkClient.createPersistent("/super", "123");  
    Thread.sleep(3000);  
    zkClient.writeData("/super", "456", -1);  
    Thread.sleep(1000);  
    zkClient.createPersistent("/super/c1", "789"); //不会被监控到  
    zkClient.deleteRecursive("/super");  
    Thread.sleep(Integer.MAX_VALUE);  
}  

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值