zookeeper меняет узлы (и не все) - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть узел / задачи со списком задач, которые должен выполнить сервер.И у меня есть наблюдатель на этом узле.Когда задача добавлена, наблюдатель вызывает метод 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");
        }
    }
};

Но обратный вызов получает все задачи, и я хочу только те, которые были добавлены, поэтому я не буду обрабатывать задачу дважды.

Каков наилучший способсделать это.

...