【Zookeeper】zk_客户端API_创建节点

客户端API操作

前提:保证服务器上zk集群服务端启动

配置maven依赖

复制代码
   <dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.8.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.6</version>
    </dependency>
</dependencies>

拷贝log4j.properties文件到项目根目录

在项目的src/main/resources目录下,新建一个文件,命名为log4j.properties,在文件中填入

复制代码
log4j.rootLogger=INFO, stdout   
log4j.appender.stdout=org.apache.log4j.ConsoleAppender   
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout   
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n   
log4j.appender.logfile=org.apache.log4j.FileAppender   
log4j.appender.logfile.File=target/spring.log   
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout   
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] 

创建zookeeper客户端

复制代码
package com.baidu.zk;

import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.junit.Test;

public class zkClient {

    @Test
    public void init()throws Exception{

        ZooKeeper zooKeeper = new ZooKeeper("master:2181,slave1:2181,slave2:2181", 100, new Watcher() {
            @Override
            public void process(WatchedEvent watchedEvent) {

            }
        });
    }
}

创建子节点

复制代码
package com.baidu.zk;
import org.apache.zookeeper.*;
import org.junit.Before;
import org.junit.Test;
public class zkClient {
    private ZooKeeper zkClient;
    @Before
    public void init()throws Exception{

        zkClient = new ZooKeeper("master:2181,slave1:2181,slave2:2181", 30000, new Watcher() {
            @Override
            public void process(WatchedEvent watchedEvent) {

            }
        });
    }

    @Test
    public void create() throws KeeperException, InterruptedException {

        String nodeCreated = zkClient.create("/sg", "zgl".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);


    }
}

获取子节点并监听节点变化

复制代码
   @Test
    public void getChildren() throws Exception{

        List<String> children = zkClient.getChildren("/", true);
        for (String child : children) {
            System.out.println(child);
        }
    }

让程序不结束:

复制代码
     @Test
    public void getChildren() throws Exception {
        List<String> children = zkClient.getChildren("/", true);
        for (String child : children) {
            System.out.println(child);
        }
        Thread.sleep(Long.MAX_VALUE);
    }

  private ZooKeeper zkClient;
    @Before
    public void init() throws Exception {
        zkClient = new ZooKeeper("master:2181,slave1:2181,slave2:2181", 5000, new Watcher() {
            @Override
            public void process(WatchedEvent watchedEvent) {
                System.out.println("---------------------------");
                try {
                    List<String> children = zkClient.getChildren("/", true);
                    for (String child : children) {
                        System.out.println(child);
                    }
                    System.out.println("---------------------------");
                } catch (KeeperException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        Thread.sleep(10000);
    }

判断Znode是否存在

复制代码
    @Test
    public void exist() throws Exception{
        Stat stat = zkClient.exists("/sanguo", false);

        System.out.println(stat == null ? "not exist" : "exist");
    }
相关推荐
AI攻城狮6 小时前
Hermes 下启动 Sub Agent 失败的痛苦教训
云原生
空中海7 小时前
第六篇:架构篇 — 微服务、部署、高并发与专家级能力
微服务·云原生·架构
苍煜8 小时前
分布式事务生产实战选型对比
分布式
JAVA面经实录91710 小时前
企业级java+LangChain4j-RAG系统 限流熔断降级
java·开发语言·分布式·langchain
Java后端的Ai之路10 小时前
Kubernetes是什么?(小白入门版)
云原生·容器·kubernetes·教程
heimeiyingwang10 小时前
【架构实战】编排vs协同:微服务通信架构选型
微服务·云原生·架构
空中海11 小时前
第二篇:注册中心篇 — Nacos 与 Eureka 服务注册发现
spring boot·云原生·eureka
007张三丰13 小时前
系统架构设计师范文4:论微服务架构及其应用
微服务·云原生·架构·软考·系统架构设计师
AI攻城狮13 小时前
Human-in-the-Loop 是生产环境不可妥协的环节
云原生
长安链开源社区14 小时前
动手开发 | 如何通过k8s部署长安链
云原生·容器·kubernetes·区块链