Ich habe einen Basispfad, der mehrere Kinder hat. Ich bin Beobachter auf dem Basispfad und alle Kinder beim Start der Anwendung hinzufügen.Watches in Kurator wird nicht ausgelöst, nachdem es auf Ablauf zurückgesetzt wurde
void init(){
List<String> children = zkCfg.getClient().getChildren().usingWatcher(this).forPath(basePath);
Stat stat = zkCfg.getClient().checkExists().usingWatcher(this).forPath(basePath);
lastKnownVersion.put(basePath.substring(basePath.lastIndexOf('/') + 1), stat.getVersion());
for (String child : children) {
stat = zkCfg.getClient().checkExists().usingWatcher(this).forPath(basePath + "/" + child);
lastKnownVersion.put(child, stat.getVersion());
}
}
Jetzt fange ich die abgelaufene Event-in-Process-Methode.
public void process(WatchedEvent event) {
try {
synchronized (this) {
if (event.getState().equals(Event.KeeperState.Expired)) {
init()
}
}
Diese Methode wird nach Ablauf ausgeführt, aber die Uhren werden bei Änderungen im Knoten nicht ausgelöst.