编程语言
首页 > 编程语言> > 5.zookeeper集成Java项目curator客户端

5.zookeeper集成Java项目curator客户端

作者:互联网

创建了一个SpringBoot项目,引入pom依赖

		<!--zookeeper-->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-client</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

配置application.yml属性

curator:
  #重试次数
  maxRetries: 3
  #重试间隔时间
  baseSleepTimeMs: 1000
  # zookeeper 地址 多个可用逗号分隔127.0.0.1:2181,127.0.0.1:2182
  connectString: 192.168.106.128:2181
  # session超时时间
  sessionTimeoutMs: 60000
  # 连接超时时间
  connectionTimeoutMs: 5000
  path: /distributed-lock

配置注入Bean

package com.example.zkConfig;

import lombok.Data;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.RetryNTimes;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Data
@Configuration
public class ZookeeperConfig {
    @Value("${curator.maxRetries}")
    private int maxRetries;
    @Value("${curator.baseSleepTimeMs}")
    private int baseSleepTimeMs;
    @Value("${curator.connectString}")
    private String connectString;
    @Value("${curator.sessionTimeoutMs}")
    private int sessionTimeoutMs;
    @Value("${curator.connectionTimeoutMs}")
    private int connectionTimeoutMs;
    @Value("${curator.path}")
    private String path;
    //调用start初始化方法
    @Bean(initMethod = "start")
    public CuratorFramework curatorFramework(){
        return CuratorFrameworkFactory.newClient(
                this.connectString,
                this.sessionTimeoutMs,
                this.connectionTimeoutMs,
                new RetryNTimes(this.maxRetries,this.connectionTimeoutMs)
                );
    }
}

测试文件ZkTest一些基本操作

package com.example;

import org.apache.curator.framework.CuratorFramework;
import org.apache.zookeeper.CreateMode;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class ZkTest {
    @Autowired
    private CuratorFramework curatorFramework;
    @Test
    public void test1() throws Exception {
        //创建持久节点
//        String s = curatorFramework.create().forPath("/test-node1");
//        创建临时序号节点
        String s = curatorFramework.create().withMode(CreateMode.EPHEMERAL_SEQUENTIAL).forPath("/test-node2", "abc".getBytes());
        System.out.println(s);
    }
    @Test
    public void test2() throws Exception {
        //获取节点的数据
        byte[] bytes = curatorFramework.getData().forPath("/test-node1");
        System.out.println(new String(bytes));
    }
    @Test
    public void test3() throws Exception {
        //修改节点的数据
        curatorFramework.setData().forPath("/test-node1","你好".getBytes());
        //获取节点的数据
        byte[] bytes = curatorFramework.getData().forPath("/test-node1");
        System.out.println(new String(bytes));
    }
    @Test
    public void test4() throws Exception {
        //创建若父节点不存在则先创建父节点
        String s = curatorFramework.create().creatingParentsIfNeeded().forPath("/node-parent/node-1");
        System.out.println(s);
    }
    @Test
    public void test5() throws Exception {
        //删除父节点 子节点存在也一并删除
        curatorFramework.delete().guaranteed().deletingChildrenIfNeeded().forPath("/node-parent");
    }

}

标签:Java,zookeeper,curator,curatorFramework,import,apache,org,public
来源: https://blog.csdn.net/Smy_0114/article/details/122693744