zookeeper操作节点代码
package cn.hbaf.zookeeper_api; import org.apache.curator.RetryPolicy; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.framework.recipes.cache.ChildData; import org.apache.curator.framework.recipes.cache.TreeCache; import org.apache.curator.framework.recipes.cache.TreeCacheEvent; import org.apache.curator.framework.recipes.cache.TreeCacheListener; import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.zookeeper.CreateMode; import org.junit.Test; public class ZookeeperAPITest { /* 节点的watch机制 */ @Test public void watchZnode() throws Exception { //1: 定制重试策略 RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,1); String conectionStr = "192.168.52.100:2181,192.168.52.110:2181,192.168.52.120:2181"; CuratorFramework client = CuratorFrameworkFactory.newClient(conectionStr,8000,8000,retryPolicy); client.start(); //4:创建TreeCache对象,指定要监控的节点路径 TreeCache treeCache = new TreeCache(client,"/hello2"); // 5:自定义一个监听器 treeCache.getListenable().addListener(new TreeCacheListener() { @Override public void childEvent( CuratorFramework curatorFramework, TreeCacheEvent treeCacheEvent) throws Exception { ChildData data = treeCacheEvent.getData(); if (data != null) { switch (treeCacheEvent.getType()) { case NODE_ADDED: System.out.println("监控到有新增节点"); break; case NODE_REMOVED: System.out.println("监控到有节点被移除"); break; case NODE_UPDATED: System.out.println("有节点更新"); break; default: break; } } } }); //开始监听 treeCache.start(); Thread.sleep(200000); } /* 获取节点数据 */ @Test public void getZnodeData() throws Exception { //定制重试策略 RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,1); String conectionStr = "192.168.52.100:2181,192.168.52.110:2181,192.168.52.120:2181"; CuratorFramework client = CuratorFrameworkFactory.newClient(conectionStr,8000,8000,retryPolicy); client.start(); byte [] bytes = client.getData().forPath("/hello"); System.out.println(new String(bytes)); client.close(); } /* 设置节点数据 */ @Test public void setZnodeData() throws Exception { //定制重试策略 RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,1); String conectionStr = "192.168.52.100:2181,192.168.52.110:2181,192.168.52.120:2181"; CuratorFramework client = CuratorFrameworkFactory.newClient(conectionStr,8000,8000,retryPolicy); client.start(); client.setData().forPath("/hello","zookeeper".getBytes()); client.close(); } /* 创建临时节点 */ @Test public void createTmpZnode() throws Exception { //1:定制重试策略 /* param1:重试时间间隔 param2:重试最大次数 * */ RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,1); //2:获取一个客户端对象 /* * param1:服务器列表 * param2:会话超时时间 * param3:链接超时时间 * param4:重试策略 * */ String connectionStr = "192.168.52.100:2181,192.168.52.110:2181,192.168.52.120:2181"; CuratorFramework client = CuratorFrameworkFactory.newClient(connectionStr,8000,8000,retryPolicy); //3:开启客户端 client.start(); //4:创建节点 client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath("/hello3","world".getBytes()); Thread.sleep(5000); //5:关闭客户端 client.close(); } /* 创建永久节点 */ @Test public void createZnode() throws Exception { //1:定制重试策略 /* param1:重试时间间隔 param2:重试最大次数 * */ RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,1); //2:获取一个客户端对象 /* * param1:服务器列表 * param2:会话超时时间 * param3:链接超时时间 * param4:重试策略 * */ String connectionStr = "192.168.52.100:2181,192.168.52.110:2181,192.168.52.120:2181"; CuratorFramework client = CuratorFrameworkFactory.newClient(connectionStr,8000,8000,retryPolicy); //3:开启客户端 client.start(); //4:创建节点 client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/hello2","world".getBytes()); //5:关闭客户端 client.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!