zoukankan      html  css  js  c++  java
  • zookeeper(二、curatorAPI使用)

    POOM文件

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

    去除zookeeper中的日志依赖,不然后台会一直有zookeeper的心跳日志,导致日志过大

    API

    package com.wk.test.zookeeperTest;
    
    import org.apache.curator.RetryPolicy;
    import org.apache.curator.framework.CuratorFramework;
    import org.apache.curator.framework.CuratorFrameworkFactory;
    import org.apache.curator.retry.ExponentialBackoffRetry;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    @SpringBootTest
    @RunWith(SpringRunner.class)
    public class CuratorBaseTest {
    
        private static final String CONNECT_PATH = "10.32.16.179:2181,10.32.16.179:2182,10.32.16.179:2183";
    
        //会话超时时间,5秒不使用自动释放连接
        private static final int SESSION_OUTTIME = 5000;
    
        //连接超时时间
        private static final int CONNECTION_OUTTIME = 5000;
    
        @Test
        public void curatorBaseTest() throws Exception {
    
            //重试策略 间隔1秒重试,重试10次
            RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 10);
            //curator工厂构建
            CuratorFramework client = CuratorFrameworkFactory.builder()
                    .connectString(CONNECT_PATH)
                    .sessionTimeoutMs(SESSION_OUTTIME)
                    .connectionTimeoutMs(CONNECTION_OUTTIME)
                    .retryPolicy(retryPolicy)
                    .build();
            //启动客户端
            client.start();
    
    
            //创建节点
    //        client.create()
    //                .creatingParentContainersIfNeeded() //递归创建节点
    //                .withMode(CreateMode.PERSISTENT) //持久化节点
    //                .forPath("/p1/p2","test".getBytes()); //节点路径和内容
    
            //删除节点
    //        client.delete()
    //                .guaranteed() //强制保证删除
    //                .deletingChildrenIfNeeded() //递归删除节点
    //                .forPath("/pb"); //删除节点路径
    
            //查看节点内容
    //        byte[] bytes = client.getData()
    //                .forPath("/p1/p2");
    //        System.out.println(new String(bytes));
    
            //修改节点内容
            //client.setData().forPath("/p1/p2", "test4".getBytes());
    
            //回调函数
    //        ExecutorService executorService = Executors.newFixedThreadPool(10);
    //        client.create()
    //                .creatingParentContainersIfNeeded()
    //                .withMode(CreateMode.PERSISTENT)
    //                .inBackground((curatorFramework, curatorEvent) -> {
    //                    System.out.println(curatorEvent.getResultCode());
    //                    System.out.println(curatorEvent.getType());
    //                    System.out.println(Thread.currentThread().getName());
    //                },executorService)
    //                .forPath("/pb");
    //        //线程暂不关闭才能看到异步效果
    //        Thread.sleep(10000);
    
    
        }
    }

    这里仅介绍一些简单应用,具体请看官方API介绍

  • 相关阅读:
    一篇文章教会你在Windows和Linux系统下搭建Nginx
    【红日安全-VulnStack】ATT&CK实战系列——红队实战(二)
    绕过WAF进行常见Web漏洞利用
    Mac mysql 5.7.x 设置服务开机自启动
    Mac mysql 5.7启动报错,解决之道 The server quit without updating PID file
    阿里云Centos7 安装mysql5.7 报错:./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
    Python 反序列化漏洞学习笔记
    Jmeter二次开发——基于Java请求
    环境篇:Atlas2.1.0兼容CDH6.3.2部署
    synchronized 是王的后宫总管,线程是王妃
  • 原文地址:https://www.cnblogs.com/Unlimited-Blade-Works/p/13385444.html
Copyright © 2011-2022 走看看