本文共 1382 字,大约阅读时间需要 4 分钟。
package com.cn.zookeeper;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;import org.junit.Test;import java.io.IOException;/** * Zookeeper监听器设置 * */public class ZKWatcher { private static final String CONNECT_STRING="hadMaster01,hadMaster02,hadSlave01,hadSlave02,hadSlave03"; private static final int SESSION_TIMEOUT=50000; @Test public void test() throws IOException, KeeperException, InterruptedException { //获取连接 ZooKeeper zk=new ZooKeeper(CONNECT_STRING,SESSION_TIMEOUT,new Watcher(){ @Override public void process(WatchedEvent watchedEvent) { Event.KeeperState state=watchedEvent.getState(); String path= watchedEvent.getPath(); Event.EventType type= watchedEvent.getType(); System.out.println(state+"\t"+path+"\t"+type); } }); /** * 注册监听器 * 第二个参数有三种传入方法 * 1、false表示不使用监听器; * 2.watcher对象,表示当前的这次监听如果响应不了的话,就会回调当前这个watcher的process方法 * 2、true表示如果当前的会话/zk所注册或者添加的所有的监听器的响应,都会调用获取连接时初始化的监听器对象中的process方法 * */ zk.getData("/cc0000000009",true,null); Thread.sleep(5000); zk.setData("/cc0000000009","hello World".getBytes(),-1); zk.close(); }}
执行结果:
监听器监听到节点数据改变了
转载地址:http://tluii.baihongyu.com/