• Zookeeper之Curator(1)客户端对节点的一些监控事件的api使用


    《一》节点改变事件的监听

     1 public class CauratorClientTest {
     2     
     3     //链接地址
     4     private static  String zkhost="172.19.27.246:2181";
     5     //sessionTimeoutMs会话超时时间,单位为毫秒。默认是60000ms
     6     private static  int  sessionTimeoutMs=5000;
     7     //connectionTimeoutMs连接创建超时时间,单位毫秒,默认15000ms
     8     private static  int connectionTimeOutMs=3000;
     9     //重连策略
    10     private static  int maxRetries;
    11     //    zookeeper连接间隔时间基数
    12     private static int baseSleepTimeMs=1000;
    13     //系统域dev,qa,pro
    14     private static String domain="dev";
    15     
    16     
    17     /**
    18  * 数据节点被改变的事件。能监听节点存储的数据发生变化,和节点被删除的事件。
    19  * 节点被删除后,会调用回调方法。
    20  */
    21 public static void testNodeChangeEvent() throws Exception{
    22     CuratorFramework client = CuratorFrameworkFactory.newClient(zkhost,sessionTimeoutMs,connectionTimeOutMs, new ExponentialBackoffRetry(baseSleepTimeMs,maxRetries));
    23     client.start();
    24     
    25     String path=client.create().creatingParentContainersIfNeeded().withMode(CreateMode.EPHEMERAL).forPath("/dev/sxf/cd","sxf".getBytes());
    26     
    27     NodeCache nodeCache=new NodeCache(client,path);
    28     
    29     /**
    30      * 注册数据节点中存储的数据被改变的事件
    31      */
    32     nodeCache.getListenable().addListener(new NodeCacheListener() {
    33         /**
    34          * 数据节点变化事件
    35          */
    36         @Override
    37         public void nodeChanged() throws Exception {
    38             
    39             ChildData data=nodeCache.getCurrentData();
    40             if(data==null){
    41                 System.out.println("节点被删除");
    42                 return;
    43             }
    44             
    45             Stat  stat=data.getStat();
    46             
    47             int a=stat.getNumChildren();
    48             
    49             System.out.println("子节点的个数为==>"+a);
    50             
    51             System.out.println("节点数据被改变改变后的数值为==>"+new String(nodeCache.getCurrentData().getData()));
    52             
    53         }
    54     });
    55     
    56     nodeCache.start();
    57     
    58     
    59     //当前线程休眠几秒
    60     Thread.sleep(10000L);
    61     
    62     
    63     client.setData().forPath("/dev/sxf/cd","中国人民解放军".getBytes());
    64     
    65     
    66     //当前线程休眠几秒
    67     Thread.sleep(10000L);
    68     client.setData().forPath("/dev/sxf/cd","第二次改变".getBytes());
    69     
    70     
    71     //当前线程休眠几秒
    72     Thread.sleep(10000L);
    73     client.delete().forPath("/dev/sxf/cd");
    74     
    75     
    76     
    77     Thread.sleep(100000L);
    78     
    79 }
    80 
    81 }
    View Code
  • 相关阅读:
    各种插件
    如何在C#中选择正确的集合 转
    转载 hashtable和dictionary的区别
    堆和栈的区别 转载
    数据结构王道错题集2019版(上>一>四章)
    mongoDB连接数据库
    linuix没有网络
    rand函数
    mongodb学习(入门。。。。。)
    先随便写
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/6782923.html
Copyright © 2020-2023  润新知