• Zookeeper Java 客户端


    1.Zookeeper Java 客户端

    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.5.8</version>
    </dependency>
    
    @Slf4j
    public class ZookeeperClientTest {
        private static final String ZK_ADDRESS = "192.168.148.129:2181";
        private static final int SESSION_TIMEOUT = 5000;
        private static ZooKeeper zooKeeper;
        private static final String ZK_NODE = "/hsm‐node";
    
    
        public void init() throws IOException, InterruptedException {
            final CountDownLatch countDownLatch = new CountDownLatch(1);
    
            zooKeeper = new ZooKeeper(ZK_ADDRESS, SESSION_TIMEOUT, event -> {
                if (event.getState() == Watcher.Event.KeeperState.SyncConnected && event.getType() == Watcher.Event.EventType.None) {
                    countDownLatch.countDown();
                    log.info("连接成功!");
                }
            });
            log.info("连接中....");
            countDownLatch.await();
        }
    
        public void createTest() throws KeeperException, InterruptedException {
            String path = zooKeeper.create(ZK_NODE, "data".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            log.info("created path: {}",path);
        }
    
        public void createAsycTest() throws InterruptedException {
            zooKeeper.create(ZK_NODE, "data".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,  CreateMode.PERSISTENT,
                    (rc, path, ctx, name) -> {
                log.info("rc {},path {},ctx {},name {}",rc,path,ctx,name);
            },"context");
            TimeUnit.SECONDS.sleep(Integer.MAX_VALUE);
        }
    
        public void setTest() throws KeeperException, InterruptedException {
            Stat stat = new Stat();
            byte[] data = zooKeeper.getData(ZK_NODE, false, stat);
            log.info("修改前: {}",new String(data));
            zooKeeper.setData(ZK_NODE, "changed!".getBytes(), stat.getVersion());
            byte[] dataAfter = zooKeeper.getData(ZK_NODE, false, stat);
            log.info("修改后: {}",new String(dataAfter));
        }
    
        public static void main(String[] args) throws Exception {
            ZookeeperClientTest zookeeperClientTest = new ZookeeperClientTest();
            zookeeperClientTest.init();
            zookeeperClientTest.createTest();
        }
    }
    
    

    2.Curator

    <dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>5.0.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    @Slf4j
    public class CuratorClientTest {
        public static void main(String[] args) throws Exception{
            //new CuratorClientTest().testCreate();
            //new CuratorClientTest().testCreateWithParent();
            new CuratorClientTest().testGetData();
        }
    
        public CuratorFramework getcliet() {
            RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
            CuratorFramework client = CuratorFrameworkFactory.newClient("192.168.148.129:2181", retryPolicy);
            client.start();
            return client;
        }
    
        public CuratorFramework getcliet2() {
            RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
            CuratorFramework client = CuratorFrameworkFactory.builder()
                    .connectString("192.168.148.129:2181")
                    .sessionTimeoutMs(5000) // 会话超时时间
                    .connectionTimeoutMs(5000) // 连接超时时间
                    .retryPolicy(retryPolicy)
                    //.namespace("base") // 包含隔离名称
                    .build();
            client.start();
            return client;
        }
    
        public void testCreate() throws Exception {
            String path = getcliet().create().forPath("/curator‐node");
            log.info("curator create node :{} successfully.", path);
        }
    
        public void testCreateWithParent() throws Exception {
            String pathWithParent="/node‐parent/sub‐node‐1";
            String path = getcliet().create().creatingParentsIfNeeded().forPath(pathWithParent);
            log.info("curator create node :{} successfully.",path);
        }
        public void testGetData() throws Exception {
            byte[] bytes = getcliet().getData().forPath("/curator‐node");
            log.info("get data from node :{} successfully.",new String(bytes));
        }
    
        public void testSetData() throws Exception {
            getcliet().setData().forPath("/curator‐node","changed!".getBytes());
            byte[] bytes = getcliet().getData().forPath("/curator‐node");
            log.info("get data from node /curator‐node :{} successfully.",new String(bytes));
        }
    
        public void testDelete() throws Exception {
            String pathWithParent="/node‐parent";
            getcliet().delete().guaranteed().deletingChildrenIfNeeded().forPath(pathWithParent);
        }
    }
    
  • 相关阅读:
    arcgis api 3.x for js 入门开发系列八聚合效果(附源码下载)
    arcgis api 3.x for js 入门开发系列七图层控制(附源码下载)
    arcgis api 3.x for js 入门开发系列六地图分屏对比(附源码下载)
    arcgis api 3.x for js 入门开发系列五地图态势标绘(附源码下载)
    arcgis api 3.x for js 入门开发系列四地图查询(附源码下载)
    Java里面获取当前服务器的IP地址
    Flutter at Google I/O 2018
    Modbus RTU 协议使用汇总
    plsql 创建表空间、用户、赋予权限
    Oracle:ODP.NET Managed 小试牛刀
  • 原文地址:https://www.cnblogs.com/steven158/p/15724309.html
Copyright © 2020-2023  润新知