curator里面的NodeCache监听节点,怎么获取触发事件

西夏一品堂 发布于 2015/10/25 14:46
阅读 2K+
收藏 0

我用curator监听一个节点(不包括子节点)的变化

代码如下:

public class Test
{
	static void watch(CuratorFramework cf, String path)throws Exception
	{
		NodeCache cn = new NodeCache(cf, path);
		cn.getListenable().addListener(new NodeCacheListener()
		{
			public void nodeChanged() throws Exception 
			{
				System.out.println("===============");
			}
		});
		cn.start(true);
	}
	public static void main(String[] args) throws Exception
	{
		ExponentialBackoffRetry retryPolicy = new ExponentialBackoffRetry(1000, 3);
		CuratorFramework cf = CuratorFrameworkFactory.newClient("192.168.1.222:2181", retryPolicy);
		cf.start();
		watch(cf, "/admin");
		TimeUnit.SECONDS.sleep(200);
	}
}



现在的问题是:nodeChanged方法为啥没有参数,正常情况下,应该有一个event的参数

有了event参数,我就可以判定,到底是修改,还是删除,还是增加

请问,现在nodeChanged方法没有参数,我怎么判断触发了什么事件

加载中
0
OSC首席酱油党
OSC首席酱油党

判断节点是新增、修改还是删除应该通过PathChildrenCache来处理,PathChildrenCacheListener有event参数,

NodeCache和NodeCacheListener是监听节点内容变更的,直接通过cn.getCurrentData().data()可以获得节点最新内容

0
c
coolcgp

PathChildrenCache对象添加一个监听器,然后根据PathChildrenCacheEvent判断事件类型,然后做出相应处理。

返回顶部
顶部