ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-01-25 23:33:50  阅读:188  来源: 互联网

标签:Java zookeeper curator curatorFramework import apache org public


创建了一个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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有