我有一个节点/任务,其中包含服务器需要执行的任务列表 . 我在那个节点上有一个观察者 . 当添加任务时,观察者调用zookeeper方法获取所有子节点,并且回调获取所有子节点的列表(我需要处理它) . 它看起来像这样:
Watcher newTaskWatcher = new Watcher(){
public void process(WatchedEvent e) {
if(e.getType() == EventType.NodeChildrenChanged) {
getTasks();
}
}
};
void getTasks(){
zk.getChildren("/tasks",
newTaskWatcher,
tasksGetChildrenCallback,
null);
}
ChildrenCallback tasksGetChildrenCallback = new ChildrenCallback() {
public void processResult(int rc, String path, Object ctx, List<String> children){
switch(Code.get(rc)) {
case CONNECTIONLOSS:
getTasks();
break;
case OK:
// loop on children list and process all the tasks
break;
default:
System.out.println("getChildren failed");
}
}
};
但回调得到了所有的任务,我只想要添加的那些任务,所以我不会两次处理任务 .
做这个的最好方式是什么 .