只能监听某一路径本身的add,delete,update
1.run NodeListener
2.run NLTest
- package com.collonn.javaUtilMvn.zookeeper.curator.NodeCache;
- public class NLTest {
- public static void main(String[] args) throws Exception {
- NLClientCreate.main(null);
- Thread.sleep(1000 * 2);
- NLClientUpdate.main(null);
- Thread.sleep(1000 * 2);
- NLClientDelete.main(null);
- }
- }
- package com.collonn.javaUtilMvn.zookeeper.curator.NodeCache;
- import org.apache.curator.RetryPolicy;
- import org.apache.curator.framework.CuratorFramework;
- import org.apache.curator.framework.CuratorFrameworkFactory;
- import org.apache.curator.framework.recipes.cache.*;
- import org.apache.curator.retry.ExponentialBackoffRetry;
- import org.apache.curator.utils.EnsurePath;
- import java.util.List;
- public class NodeListener {
- public static final String C_PATH = "/TestNode";
- public static final String CHARSET = "UTF-8";
- public static void main(String[] args) {
- try {
- new Thread(new Runnable() {
- @Override
- public void run() {
- try{
- String zookeeperConnectionString = "127.0.0.1:2181";
- RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
- CuratorFramework client = CuratorFrameworkFactory.newClient(zookeeperConnectionString, retryPolicy);
- client.start();
- final NodeCache nodeCache = new NodeCache(client, C_PATH);
- nodeCache.getListenable().addListener(new NodeCacheListener() {
- @Override
- public void nodeChanged() throws Exception {
- System.out.println("================== catch node data change ==================");
- ChildData childData = nodeCache.getCurrentData();
- if(childData == null){
- System.out.println("===delete, path=" + C_PATH + ", childData=" + childData);
- }else{
- System.out.println("===update or add, path=" + C_PATH + ", childData=" + new String(childData.getData(), CHARSET));
- }
- }
- });
- nodeCache.start();
- Thread.sleep(Integer.MAX_VALUE);
- client.close();
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- }).start();
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- }
- package com.collonn.javaUtilMvn.zookeeper.curator.NodeCache;
- import org.apache.curator.RetryPolicy;
- import org.apache.curator.framework.CuratorFramework;
- import org.apache.curator.framework.CuratorFrameworkFactory;
- import org.apache.curator.retry.ExponentialBackoffRetry;
- import org.apache.zookeeper.CreateMode;
- import org.apache.zookeeper.data.Stat;
- import java.util.Random;
- public class NLClientCreate {
- public static void main(String[] args) {
- new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- String zookeeperConnectionString = "127.0.0.1:2181";
- RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
- CuratorFramework client = CuratorFrameworkFactory.newClient(zookeeperConnectionString, retryPolicy);
- client.start();
- Stat stat = client.checkExists().forPath(NodeListener.C_PATH);
- if (stat == null) {
- client.create().withMode(CreateMode.PERSISTENT).forPath(NodeListener.C_PATH, "-1".getBytes(NodeListener.CHARSET));
- }
- client.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }).start();
- }
- }
- package com.collonn.javaUtilMvn.zookeeper.curator.NodeCache;
- import org.apache.curator.RetryPolicy;
- import org.apache.curator.framework.CuratorFramework;
- import org.apache.curator.framework.CuratorFrameworkFactory;
- import org.apache.curator.retry.ExponentialBackoffRetry;
- import org.apache.zookeeper.data.Stat;
- import java.util.Random;
- public class NLClientUpdate {
- public static void main(String[] args) {
- new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- String zookeeperConnectionString = "127.0.0.1:2181";
- RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
- CuratorFramework client = CuratorFrameworkFactory.newClient(zookeeperConnectionString, retryPolicy);
- client.start();
- Stat stat = client.checkExists().forPath(NodeListener.C_PATH);
- if (stat != null) {
- client.setData().forPath(NodeListener.C_PATH, "128".getBytes(NodeListener.CHARSET));
- }
- client.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }).start();
- }
- }
- package com.collonn.javaUtilMvn.zookeeper.curator.NodeCache;
- import org.apache.curator.RetryPolicy;
- import org.apache.curator.framework.CuratorFramework;
- import org.apache.curator.framework.CuratorFrameworkFactory;
- import org.apache.curator.retry.ExponentialBackoffRetry;
- import org.apache.zookeeper.CreateMode;
- import org.apache.zookeeper.data.Stat;
- import java.util.Random;
- public class NLClientDelete {
- public static void main(String[] args) {
- new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- String zookeeperConnectionString = "127.0.0.1:2181";
- RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
- CuratorFramework client = CuratorFrameworkFactory.newClient(zookeeperConnectionString, retryPolicy);
- client.start();
- Stat stat = client.checkExists().forPath(NodeListener.C_PATH);
- if (stat != null) {
- client.delete().forPath(NodeListener.C_PATH);
- }
- client.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }).start();
- }
- }