ZooKeeper的java客户端api的监听功能代码示范

ZooKeeper的java客户端api的监听功能代码示范

package cn.edu360.zk.demo;



import java.util.List;

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.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;
import org.junit.Before;
import org.junit.Test;

public class ZookeeperWatchDemo {

ZooKeeper zk = null;
	
	@Before
	public void init() throws Exception {
		
		zk = new ZooKeeper("hadoop1:2181,hadoop2:2181,hadoop3:2181", 2000, new Watcher() {

			@Override
			public void process(WatchedEvent event) {
				
				if(event.getState() == KeeperState.SyncConnected && event.getType() == EventType.NodeDataChanged) {
				System.out.println(event.getPath());  //收到的事件所发生的节点路径
				System.out.println(event.getType());  //收到的事件的类型
				System.out.println("赶紧换照片,换性感的浴衣...");  //收到事件后我们的处理逻辑			
				
				
				try {
					zk.getData("/mygirls", true, null);
				} catch (KeeperException | InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}else if(event.getState() == KeeperState.SyncConnected && event.getType() == EventType.NodeChildrenChanged) {
				System.out.println("子节点变化了。");
			}
		}
		});
		
	}
	
	@Test
	public void testGetWatch() throws Exception {
		
		byte[] data = zk.getData("/mygirls",true ,null);  //监听节点变化
		
		List<String> children = zk.getChildren("/mygirls", true); //监听子节点变化事件
		
		System.out.println(new String(data,"UTF-8"));
		
		Thread.sleep(Long.MAX_VALUE);
		
		
	}
	
	
	
	
}

猜你喜欢

转载自blog.csdn.net/robertdowneylm/article/details/80345016