zoukankan      html  css  js  c++  java
  • 聊聊、Zookeeper 客户端 Curator

    【Curator】 

     和 ZkClient 一样,Curator 也是开源客户端,Curator 是 Netflix 公司开源的一套框架。 

    <dependency>
    	<groupId>org.apache.curator</groupId>
    	<artifactId>curator-framework</artifactId>
    	<version>2.8.0</version>
    </dependency>
    

     创建连接

    •  static CuratorFramework newClient(String connectString,RetryPolicy retryPolicy)
    •  static CuratorFramework newClient(String connectString,int sessionTimeOutMs,int connectionTimeOutMs,RetryPolicy retryPolicy)

     和原生 API,ZkClient 客户端都不一样,Curator 通过 CuratorFrameworkFactory 来创建客户端,然后调用 start 方法来启动。

    package zookeeper.curator;
    
    import org.apache.curator.RetryPolicy;
    import org.apache.curator.framework.CuratorFramework;
    import org.apache.curator.framework.CuratorFrameworkFactory;
    import org.apache.curator.retry.ExponentialBackoffRetry;
    
    public class OpenCuratorClient {
    	
    	public static void main(String[] args) {
    		RetryPolicy policy = new ExponentialBackoffRetry(1000, 3);
    		CuratorFramework client = CuratorFrameworkFactory.newClient("127.0.0.1:2181",5000,3000,policy);
    		client.start();
    				
    	}
    
    }
    

     ExponentialBackoffRetry 是 SleepingRetry 实现类,而 SleepingRetry 又是 RetryPolicy 接口实现类。ExponentialBackoffRetry(1000, 3) 表示初始 sleep 时间 1 秒,重试次数为 3。

     

     创建节点

    •  public CreateBuilder create()
    •  public ProtectACLCreateModePathAndBytesable<String> creatingParentsIfNeeded()
    •  public T withMode(CreateMode mode)
    •  public T forPath(String path,byte[] data) throws Exception
    •  public T forPath(String path) throws Exception
    package zookeeper.curator;
    
    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.apache.zookeeper.CreateMode;
    
    public class OpenCuratorClient {
    	
    	public static void main(String[] args) {
    		
    		RetryPolicy policy = new ExponentialBackoffRetry(1000, 3);
    		CuratorFramework client = CuratorFrameworkFactory.newClient("127.0.0.1:2181",5000,3000,policy);
    		client.start();
    		
    		try {
    			
    			client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath("/app2","app2".getBytes());
    			
    		} catch (Exception e1) {
    			e1.printStackTrace();
    		}
    		
    		
    		try {
    			Thread.sleep(Integer.MAX_VALUE);
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    		
    	}
    
    }
    

      

     谢谢大家观看!

  • 相关阅读:
    JS中的if语句内如何加or使多个条件通过
    对计算属性中get和set的理解
    如何在vue里实现同步阻塞请求,请求完成之前不加载页面或组件?
    vue 路由传参 params 与 query两种方式的区别
    vue中通过路由跳转的三种方式
    vue生成单文件组件和组件嵌套步骤
    this.$router.push() 在新窗口怎么打开
    Vue路由获取路由参数
    vue的v-for循环普通数组、对象数组、对象、数字
    element el-cascader设置默认值
  • 原文地址:https://www.cnblogs.com/xums/p/7220493.html
Copyright © 2011-2022 走看看