赞
踩
public class CuratorTest { private CuratorFramework client; @Before public void init() { // 1、方式一 RetryPolicy retryPolicy = new ExponentialBackoffRetry(3000, 10); CuratorFramework curatorFramework = CuratorFrameworkFactory.newClient("localhost:2181", 60 * 1000, 15 * 1000, retryPolicy); // 2、方式二 CuratorFramework client = CuratorFrameworkFactory.builder() .connectString("localhost:2181") .sessionTimeoutMs(60 * 1000) .connectionTimeoutMs(15 * 1000) .retryPolicy(retryPolicy) .namespace("test") .build(); // 开启连接 client.start(); this.client = client; } /** * 1、基本创建:client.create().forPath("/app1") * 2、创建节点,带有数据:client.create().forPath("/app1", data) * 3、设置节点的类型: client.create().withMode(CreateMode.EPHEMERAL).forPath("/app1") * 4、创建多级节点: client.create().creatingParentsIfNeeded().forPath("/app1/app2") */ @Test public void testCreate() { // 1、基本创建 // 如果创建节点,没有指定数据,则默认将当前客户端的ip作为数据存储 try { String path = client.create().forPath("/app1"); System.out.println(path); } catch (Exception e) { throw new RuntimeException(e); } } /** * 查询节点: * 1、查询数据:get * 2、查询子节点: ls * 3、查询节点状态信息: ls -s */ @Test public void testQueryData() { // 1、查询数据: get try { byte[] data = client.getData().forPath("/app1"); System.out.println(new String(data)); } catch (Exception e) { throw new RuntimeException(e); } } @Test public void testQueryChildren() { // 查询子节点: ls try { List<String> stringList = client.getChildren().forPath("/"); System.out.println(stringList); } catch (Exception e) { throw new RuntimeException(e); } } @Test public void testQueryState() { // 查询节点状态信息: ls -s Stat status = new Stat(); try { client.getData().storingStatIn(status).forPath("/app1"); System.out.println(status); } catch (Exception e) { throw new RuntimeException(e); } } /** * 修改数据: * 1、修改数据。 * 2、根据版本修改 */ @Test public void testSet() { // 修改数据 try { client.setData().forPath("/app1", "haha".getBytes()); } catch (Exception e) { throw new RuntimeException(e); } } @Test public void testSetForVersion() throws Exception { // 根据版本修改 Stat stat = new Stat(); // 查询节点状态信息: ls -s client.getData().storingStatIn(stat).forPath("/app1"); int version = stat.getVersion(); client.setData().withVersion(version).forPath("/app1", "hehe".getBytes()); } /** * 删除节点:delete、deleteall * 1、删除单个节点 * 2、删除带有子节点的节点 * 3、必须成功的删除: 为了防止网络抖动。本质就是重试。 * 4、回调 */ @Test public void testSingleDelete() throws Exception { // 1、删除单个节点 client.delete().forPath("/app1"); // 2、删除带有子节点的节点 client.delete().deletingChildrenIfNeeded().forPath("/app1"); // 3、必须成功删除 client.delete().guaranteed().forPath("/app1"); //4、回调 client.delete().guaranteed().inBackground((client, event) -> { System.out.println("我被删除了"); System.out.println(event); }).forPath("/app1"); } @After public void close() { if (client != null) { client.close(); } } }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。