<强>下面,我们将通过一个简单的示例演示馆长最基本的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动物园管理员馆长基本使用