动物园管理员馆长基本使用

  

<强>下面,我们将通过一个简单的示例演示馆长最基本的crud功能:

  

maven依赖:

  
 <代码> & lt; dependencies>
  & lt; dependency>
  & lt; groupId> org.apache.zookeeper
  & lt; artifactId> zookeeper
  & lt; version> 3.4.12
  & lt;/dependency>
  
  & lt; dependency>
  & lt; groupId> org.apache.curator
  & lt; artifactId> curator-recipes
  & lt; version> 2.12.0
  & lt;/dependency>
  
  & lt; dependency>
  & lt; groupId> junit
  & lt; artifactId> junit
  & lt; version> 4.12 & lt;/version>
  & lt; scope> test
  & lt;/dependency>
  & lt;/dependencies>  
  

测试类:

  
 <代码>包per.ym.zookeeper;
  
  进口并不知道;
  
  进口org.apache.curator.RetryPolicy;
  进口org.apache.curator.framework.CuratorFramework;
  进口org.apache.curator.framework.CuratorFrameworkFactory;
  进口org.apache.curator.retry.BoundedExponentialBackoffRetry;
  进口org.apache.curator.retry.ExponentialBackoffRetry;
  进口org.apache.curator.retry.RetryForever;
  进口org.apache.curator.retry.RetryNTimes;
  进口org.apache.curator.retry.RetryOneTime;
  进口org.apache.curator.retry.RetryUntilElapsed;
  进口org.apache.zookeeper.data.Stat;
  进口org.junit.After;
  进口org.junit.Before;
  进口org.junit.Test;
  
  公开课CuratorBasicAPI {
  
  私人CuratorFramework客户;
  
  私人字符串connectString=?92.168.61.131:2184”;
  
  私人int sessionTimeoutMs=60000;
  
  私人int connectionTimeoutMs=60000;
  
  私人字符串路径="/测试”;
  
  私人字符串rootPath="/";
  
  私人byte [] https://www.yisu.com/zixun/data="数据" .getBytes ();
  
  私人byte [] newData=" https://www.yisu.com/zixun/newData " .getBytes ();
  
  私人int baseSleepTimeMs=1000;
  
  私人int maxRetries=3;
  
  @Before
  公共空间连接(){//baseSleepTimeMs:基础睡眠时间,maxRetries:最大重试次数;maxSleepMs:两次重试之间最大睡眠时间//其睡眠时间计算公式为:sleepMs=baseSleepTimeMs *数学。max(1,随机的。nextInt (1 & lt; & lt;(retryCount + 1)));
  RetryPolicy retryPolicy1=new ExponentialBackoffRetry (baseSleepTimeMs maxRetries);//ExponentialBackoffRetry的子类,重写了父类的getSleepTimeMs方法//其睡眠时间计算公式为:数学。分钟(maxSleepTimeMs,超级。getSleepTimeMs (retryCount elapsedTimeMs));
  RetryPolicy retryPolicy2=new BoundedExponentialBackoffRetry(50000年baseSleepTimeMs maxRetries);//最大重试3次,每次相隔时间为5000毫秒
  RetryPolicy retryPolicy3=new RetryNTimes (5000);//只重试一次,RetryNTimes的子类,就是将次数指定为1
  RetryPolicy retryPolicy4=new RetryOneTime (3000);//一直重试,重试间隔为3000毫秒
  RetryPolicy retryPolicy5=new RetryForever (3000);//最大重试时间为20000毫秒,若超过就不重试了,每次间隔3000毫秒
  RetryPolicy retryPolicy6=new RetryUntilElapsed (20000、3000);//客户=CuratorFrameworkFactory。newClient (connectString sessionTimeoutMs、connectionTimeoutMs retryPolicy);//流式
  客户=CuratorFrameworkFactory.builder ()
  .connectString (connectString)//服务器列表,格式host1:端口1,host2:端口2,…
  .sessionTimeoutMs (sessionTimeoutMs)//会话超时时间,单位毫秒,默认60000 ms
  .connectionTimeoutMs (connectionTimeoutMs)//连接创建超时时间,单位毫秒,默认60000 ms
  .retryPolicy (retryPolicy1)
  .build ();//启动
  client.start ();
  }
  
  @Test
  公共空间showBasicAPI()抛出异常{
  存在();
  
  create ();
  
  存在();
  
  getData ();
  
  setData ();
  
  getData ();
  
  调用getChildren ();
  
  删除();
  
  调用getChildren ();
  
  }
  
  @After
  公共空间close () {//关闭连接
  client.close ();
  }
  
  私人空间创建()抛出异常{//创建一个节点//client.create () .forPath(路径);//创建一个节点附带数据
  client.create ()。forPath(路径、数据);
  
  system . out。println(“创建节点:“+路径);//创建一个临时节点,默认不指定是持久的,另外还有持久带序列和临时带序列PERSISTENT_SEQUENTIAL, EPHEMERAL_SEQUENTIAL//client.create () .withMode (CreateMode.EPHEMERAL) .forPath(路径);//如果没有父目录则一起创建//client.create () .creatingParentsIfNeeded () .forPath(路径);//后天模式,还可以传入自定义回调和线程池//client.create () .inBackground () .forPath(路径);//带权限的//List

动物园管理员馆长基本使用