• .Net客户端监听ZooKeeper节点数据变化


    一个很简单的例子,用途是监听zookeeper中某个节点数据的变化,具体请参见代码中的注释

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using ZooKeeperNet;
    
    namespace ZooKeeperDemo
    {
        /// <summary>
        /// 监听者实现类
        /// </summary>
        public class Watcher : IWatcher
        {
            public void Process(WatchedEvent @event)
            {
                if (@event.Type == EventType.NodeDataChanged)
                {
                    Console.WriteLine(string.Format("节点:{0},数据发生变化...",@event.Path));
                    zkHelper.NodeDataChangeListen(@event.Path);
                }
            }
        }
    
        /// <summary>
        /// zookeeper操作帮助类
        /// </summary>
        public class zkHelper {
            /// <summary>
            /// 控制zk只有一个实例
            /// </summary>
            public static ZooKeeper zk = new ZooKeeper("192.168.1.136:2181", new TimeSpan(0, 0, 0, 5000), new Watcher());
            
            /// <summary>
            /// 监听指定ZooKeeper指定节点数据变化
            /// </summary>
            /// <param name="nodePath"></param>
            public static void NodeDataChangeListen(string nodePath) {
                //调用zk的GetData()方法取数据,当数据有变化时会回调Watcher
                byte[] byts = zk.GetData(nodePath, true, null);
                //打印出变化后的数据
                Console.WriteLine(string.Format("获取到节点{0}的数据为:{1}", nodePath, Encoding.Default.GetString(byts)));
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                //操作步骤
                //0.导入操作Zookeeper的相关类库(NuGet方式),Install-Package ZooKeeperNet
                //1.运行当前控制台程序
                //2.在linux中连接到zkCli.sh
                //3.用命令行在linux中修改zookeeper中/root/childtwo 节点的数据
                //4.修改数据的命令为 set /root/childtwo hello888888
                //5.当前控制台程序监测到/root/childtwo节点数据变化,并将变化的数据打印到控制台
                //6.重复上面第5和底6个步骤,当前控制台的数据会不断的发生变化
    
                zkHelper.NodeDataChangeListen("/root/childtwo");
                Console.ReadKey();
            }
        }
    }

    最终运行效果如下图:

  • 相关阅读:
    could not detect mdm peripheral on hardware
    学习zynq的一些感受
    sdk添加新的C文件编译出错
    linux下驱动webcam
    转:fatal error: SDL/SDL.h: No such file or directory
    转:Unknown module(s) in QT: multimedia
    HFSS设计导入AD中
    REST(Representational state transfer)的四个级别以及HATEOAS介绍
    Servlet CDI Example Analysis
    Introduction and use of Cookie and Session(Cookie&Session的介绍和使用)
  • 原文地址:https://www.cnblogs.com/huangzelin/p/zookeeper.html
Copyright © 2020-2023  润新知