大数据全系列 教程
1869个小节阅读:464.8k
目录
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
4.9 验证注册事件被触发的一次性
xxxxxxxxxx
@Test
public void getDataWatcher(){
String result = null;
System.out.println("get:");
try {
byte[] data = zkCli.getData("/zk001", new Watcher() {
@Override
public void process(WatchedEvent event) {
LOGGER.info("getDataWatcher event type:{" + event.getType() + "}");
System.out.println("watcher ok!!");
}
}, null);
result = new String(data);
} catch (KeeperException e) {
LOGGER.error(e.getMessage());
Assert.fail();
} catch (InterruptedException e) {
LOGGER.error(e.getMessage());
Assert.fail();
}
LOGGER.info("getData result:{"+result+"}");
//修改节点值
try {
System.out.println("-------set1------");
zkCli.setData("/zk001","update1".getBytes(),-1);
System.out.println("-------set2------");
zkCli.setData("/zk001","update2".getBytes(),-1);
} catch (Exception e) {
LOGGER.error(e.getMessage());
Assert.fail();
}
System.out.println("test over");
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
LOGGER.error(e.getMessage());
}
}
注册Watcher,查询注册watch,增删改触发watcher
如果是多次增删改,回调方法调用几次?
1、watcher事件是一次性的
2、是增删改触发watcher,但是watcher是线程异步执行
3、watcher可以反复注册
如何平滑反复注册?在回调方法中迭代调用即可。