zoukankan      html  css  js  c++  java
  • zookeeperclient设置监听

    1、目的
    zookeeper是一个分布式服务管理框架。zookeeper提供了对client的通知。即在server端的节点有改动或者删除的时候,能够给client进行通知。

    2、server端部署
    server端部署zookeeper的步骤省略。详细的能够參看我前面的文章。部署也比較简单。

    3、client接收通知代码

    import java.io.IOException;
    import java.util.List;
    
    import org.apache.zookeeper.CreateMode;
    import org.apache.zookeeper.KeeperException;
    import org.apache.zookeeper.WatchedEvent;
    import org.apache.zookeeper.Watcher;
    import org.apache.zookeeper.Watcher.Event.EventType;
    import org.apache.zookeeper.ZooDefs.Ids;
    import org.apache.zookeeper.ZooKeeper;
    
    class Wa implements Runnable
    {
    
        public void run() {
            //连接启动k
            try {
                ZooKeeper zk = new ZooKeeper("10.218.137.73:2181", 500000,new Watcher() {
                       // 监控全部被触发的事件
                         public void process(WatchedEvent event) {
                         System.out.println("changing...");
                       }
                  });
            //设置监听器 
                Watcher wc = new Watcher() {
    
                    public void process(WatchedEvent event) {
                        // TODO Auto-generated method stub
                        if (event.getType() == EventType.NodeDataChanged) {  
                            System.out.println("change"); 
                        }  
                        if (event.getType() == EventType.NodeDeleted){  
                            System.out.println("dele");  
                        }  
                        if(event.getType()== EventType.NodeCreated){ 
                            System.out.println("create"); 
                    }
                    }
    
                };
                //进行轮询。当中exists方法用来询问状态,而且设置了监听器,假设发生变化,则会回调监听器里的方法。

    while(true) { zk.exists("/jianghuiwen", wc); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (KeeperException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public class Main { public static void main(String[] args) throws IOException, KeeperException, InterruptedException { // TODO Auto-generated method stub Thread t = new Thread(new Wa()); t.start(); } }

    直接贴了代码,没有加上各种jar包,假设同学们要执行的话,须要先设置一下相关的jar包。应该就是Log4j和zookeeper的包。

    4、測试
    利用zookeeper自带的zkCli.sh或者用其它对节点进行改动的client进行改动节点。能够发现我们得到了以下的输出:
    这里写图片描写叙述

  • 相关阅读:
    IOSNSDate输出string方式小记
    IOSMFMailComposeViewController自定义NavBar
    IOSanimated使用注意
    IOS获取Model(设备型号)、Version(设备版本号)、app(程序版本号)等
    IOSselector注意事项:@selector(showAlertView:)
    IOSOpenURL
    JVM GC, 新生代,旧生代
    PageCache, BufferCache, SwapCache
    java nio(reactor, selector, selectionKey)
    byteBuffer, clear(), flip(), rewind(), allocate(), allocateDirect()
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7185747.html
Copyright © 2011-2022 走看看