只能监听某一路径本身的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();
}
}