zookeeper_ZKClient

版权声明:尊重原创 https://blog.csdn.net/qq_41256709/article/details/88116805

操作zookeeper原生API过于繁琐。

原生API:

	不能递归创建:如若不存在“/local”,那么在直接创建"/local/tmp"则会报错。
	不能递归删除:如若存在“/local/tmp”,那么在做删除"/local"时就会报错。
	watch的监听是一次性的,只能手动将其设置为true才可以。

在使用ZKClient在创建节点的时候,如若是递归创建,则不能为节点赋值。

非递归创建:

zkc.createPersistent("/super");
Thread.sleep(1000);

zkc.createPersistent("/super" + "/" + "c1", "c1内容");
Thread.sleep(1000);

zkc.createPersistent("/super" + "/" + "c2", "c2内容");
Thread.sleep(1000);

递归创建

zkc.createPersistent("/super/c1", true); //true表示创建父节点

ZKClient实现watch

ZkClient zkc = new ZkClient(new ZkConnection(CONNECT_ADDR), 5000);
//对父节点添加监听子节点变化。
zkc.subscribeChildChanges("/super", new IZkChildListener() {
//创建、删除   
   @Override
   public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception {
      System.out.println("parentPath: " + parentPath);
      System.out.println("currentChilds: " + currentChilds);
   }
});
zkc.subscribeDataChanges("/super", new IZkDataListener() {
   @Override
   public void handleDataDeleted(String path) throws Exception {
      System.out.println("删除的节点为:" + path);
   }
   @Override
   public void handleDataChange(String path, Object data) throws Exception {
      System.out.println("变更的节点为:" + path + ", 变更内容为:" + data);
   }
});

猜你喜欢

转载自blog.csdn.net/qq_41256709/article/details/88116805