步骤
- 创建maven项目
- 引入zookeeper编程依赖
| <dependencies> |
| <dependency> |
| <groupId>org.apache.zookeeper</groupId> |
| <artifactId>zookeeper</artifactId> |
| <version>3.4.6</version> |
| </dependency> |
| </dependencies> |
- 编程使用
构建zookeeper连接
| |
| |
| |
| |
| |
| |
| String connectString = "192.168.200.111:2181,192.168.200.112:2181,192.168.200.113:2181"; |
| ZooKeeper zkClient = new ZooKeeper(connectString, 2000, new Watcher() { |
| public void process(WatchedEvent event) { |
| System.out.println(event.getPath() + "-" + event.getType()); |
| } |
| }); |
查看节点的数据
| |
| |
| Stat stat = new Stat(); |
| byte[] data = zkClient.getData("/test", true, stat); |
| System.out.println(new String(data)); |
| System.out.println(stat.getNumChildren()); |
| System.out.println(stat.getDataLength()); |
查看子节点数据
| |
| List<String> children = zkClient.getChildren("/test0000000025", false); |
| System.out.println(children.toString()); |
创建子节点
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| String s = zkClient.create("/test0000000026/a", "balabala".getBytes(), |
| ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); |
| System.out.println(s); |
阻塞主线程,一直处于监听的状态
| |
| |
| |
| |
| |
| |
| String connectString = "192.168.200.111:2181,192.168.200.112:2181,192.168.200.113:2181"; |
| zkClient = new ZooKeeper(connectString, 2000, new Watcher() { |
| public void process(WatchedEvent event) { |
| System.out.println("路径:" + event.getPath() + "----类型:" + event.getType()); |
| |
| try { |
| Stat stat = new Stat(); |
| byte[] data = zkClient.getData("/test", true, stat); |
| } catch (KeeperException e) { |
| e.printStackTrace(); |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| } |
| } |
| }); |
| |
| |
| |
| |
| Thread.sleep(Long.MAX_VALUE); |
完整代码
| import org.apache.zookeeper.*; |
| import org.apache.zookeeper.data.Stat; |
| import java.io.IOException; |
| import java.util.List; |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| public class Demo { |
| static ZooKeeper zkClient = null; |
| public static void main(String[] args) throws IOException, KeeperException, InterruptedException { |
| |
| |
| |
| |
| |
| |
| String connectString = "192.168.200.111:2181,192.168.200.112:2181,192.168.200.113:2181"; |
| zkClient = new ZooKeeper(connectString, 2000, new Watcher() { |
| public void process(WatchedEvent event) { |
| System.out.println("路径:" + event.getPath() + "----类型:" + event.getType()); |
| |
| try { |
| Stat stat = new Stat(); |
| byte[] data = zkClient.getData("/test", true, stat); |
| } catch (KeeperException e) { |
| e.printStackTrace(); |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| } |
| } |
| }); |
| |
| |
| |
| Stat stat = new Stat(); |
| byte[] data = zkClient.getData("/test", true, stat); |
| System.out.println(new String(data)); |
| System.out.println(stat.getNumChildren()); |
| System.out.println(stat.getDataLength()); |
| |
| System.out.println("-----查看子节点-----"); |
| |
| List<String> children = zkClient.getChildren("/test0000000025", false); |
| System.out.println(children.toString()); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| String s = zkClient.create("/test0000000026/a", "balabala".getBytes(), |
| ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); |
| System.out.println(s); |
| |
| |
| |
| |
| Thread.sleep(Long.MAX_VALUE); |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?