简介
curator可以监听路径下子节点的变更操作,如创建节点,删除节点
官方文档:http://curator.apache.org/curator-recipes/path-cache.html
javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/cache/PathChildrenCache.html
代码示例
import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.framework.recipes.cache.PathChildrenCache; import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent; import org.apache.curator.framework.recipes.cache.PathChildrenCacheListener; import org.apache.curator.retry.ExponentialBackoffRetry; public class PathChildrenCacheDemo { private static CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181", new ExponentialBackoffRetry(3000, 1)); private static String path = "/path/test/0001"; static { client.start(); } public static void main(String[] args) throws Exception { PathChildrenCache pathChildrenCache = new PathChildrenCache(client, path, true); pathChildrenCache.getListenable().addListener(new PathChildrenCacheListener() { @Override public void childEvent(CuratorFramework curatorFramework, PathChildrenCacheEvent pathChildrenCacheEvent) throws Exception { System.out.println(pathChildrenCacheEvent.toString()); } }); pathChildrenCache.start(); System.out.println("started"); Thread.sleep(2000); System.out.println("sleep end"); client.create().forPath(path + "/000002"); client.delete().forPath(path + "/000002"); System.out.println("updated"); pathChildrenCache.close(); System.out.println("close"); Thread.sleep(50000); client.close(); } }