Zookeeper客户端curator常用法
来源:互联网 发布:手机淘宝新手怎么拿货 编辑:程序博客网 时间:2024/05/29 11:49
Maven配置
<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId></dependency><dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId></dependency>
基本用法
增删查改
public static void main( String[] args ) throws Exception { //创建重连策略 RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); //创建会话 CuratorFramework client = CuratorFrameworkFactory.builder() .connectString("localhost:2181") .sessionTimeoutMs(5000) .retryPolicy(retryPolicy) .build(); client.start(); String path = "/example"; //创建节点 client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath(path, "init".getBytes()); //读取数据节点 byte[] data = client.getData().forPath(path); System.out.println("init data is: " + new String(data)); //更新数据节点 client.setData().forPath(path, "update data".getBytes()); //删除数据节点 client.delete().deletingChildrenIfNeeded().forPath(path);}
异步接口
//请参考前面代码...//关键代码final CountDownLatch cdl = new CountDownLatch(1);String path = "/example";//创建节点client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL) //创建成功后回调方法 .inBackground(new BackgroundCallback() { @Override public void processResult(CuratorFramework curatorFramework, CuratorEvent curatorEvent) throws Exception { System.out.println("node name is: " + curatorEvent.getName()); System.out.println("node path is: " + curatorEvent.getPath()); System.out.println("event type: " + curatorEvent.getType()); cdl.countDown(); } }) .forPath(path, "init".getBytes());System.out.println("already commit!");cdl.await();
输出:
already commit!node name is: /examplenode path is: /exampleevent type: CREATE
事件监听
数据节点监听
public static void watchNode() throws Exception { client.start(); //创建节点 client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath(path, "init".getBytes()); final NodeCache nodeCache = new NodeCache(client, path); nodeCache.start(); final CountDownLatch countDownLatch = new CountDownLatch(1); nodeCache.getListenable().addListener(new NodeCacheListener() { @Override public void nodeChanged() throws Exception { byte[] data = nodeCache.getCurrentData().getData(); System.out.println(new String(data)); countDownLatch.countDown(); } }); client.setData().forPath(path, "update node".getBytes()); countDownLatch.await();}
输出:
update node
数据子节点监听
public static void watchChildrenNode() throws Exception { client.start(); //创建节点 final NodeCache nodeCache = new NodeCache(client, path); nodeCache.start(); final CountDownLatch countDownLatch = new CountDownLatch(2); PathChildrenCache pathChildrenCache = new PathChildrenCache(client, path, true); pathChildrenCache.start(PathChildrenCache.StartMode.POST_INITIALIZED_EVENT); pathChildrenCache.getListenable().addListener(new PathChildrenCacheListener() { @Override public void childEvent(CuratorFramework curatorFramework, PathChildrenCacheEvent pathChildrenCacheEvent) throws Exception { System.out.println("event type: " + pathChildrenCacheEvent.getType()); System.out.println("node data: " + pathChildrenCacheEvent.getData()); countDownLatch.countDown(); } }); client.create().withMode(CreateMode.EPHEMERAL).forPath(path + "/child", "child data".getBytes()); System.out.println("init child data: " + new String(client.getData().forPath(path + "/child"))); client.setData().forPath(path + "/child", "set child data".getBytes()); countDownLatch.await();}
输出:
event type: INITIALIZEDnode data: nullinit child data: child dataevent type: CHILD_ADDEDnode data: ChildData{path='/example/child', stat=151,151,1453725266116,1453725266116,0,0,0,95263405746815019,10,0,151, data=[99, 104, 105, 108, 100, 32, 100, 97, 116, 97]}
1 0
- Zookeeper客户端curator常用法
- ZooKeeper客户端curator应用
- zookeeper Curator客户端
- zookeeper客户端curator使用手记
- zookeeper客户端curator
- ZooKeeper客户端curator组件介绍
- ZooKeeper的客户端库Curator
- Zookeeper客户端Curator使用详解
- zookeeper开源客户端curator
- zookeeper客户端操作框架curator
- Zookeeper开源客户端框架Curator简介
- Zookeeper开源客户端框架Curator简介
- Zookeeper开源客户端框架Curator简介
- Zookeeper开源客户端框架Curator简介
- Zookeeper开源客户端框架Curator简介
- Zookeeper开源客户端框架Curator简介
- Zookeeper开源客户端框架Curator简介
- ZooKeeper客户端curator介绍及使用
- Maven Reference
- HDU3667Transportation(巧妙的建图,费用流)
- RMAN维护:RMAN中的交叉校验crosscheck
- 单链表逆序
- leetcode--Multiply Strings
- Zookeeper客户端curator常用法
- mac中修改系统限制量--ulimit和sysctl
- C++ STL string 基本操作
- ZooKeeper建立会话
- Unity开发app之搜索功能
- Android studio 如何让包有层次显示
- 动态内存分配
- 莫队算法详解
- PHP程序在引号前自动加反斜杠的原因与处理办法