Ja-Timer werden bei einem Fehlerfall überprüft und wiederhergestellt.
Allerdings ist hier ein subtiles Detail zu verstehen. Wenn Sie einen Verarbeitungszeitgeber registrieren, speichert der WindowOperator
den zukünftigen Zeitstempel in einer Warteschlange und plant eine Zeitgeberaufgabe, die den WindowOperator
auslöst. Wenn ein WindowOperator
ausgelöst wird, werden alle registrierten Timer-Ereignisse verarbeitet, deren Zeitstempel niedriger als der aktuelle Zeitstempel sind.
Flink prüft nur die Warteschlange des zukünftigen Zeitstempels, nicht jedoch die geplanten Timer-Aufgaben. Das bedeutet, dass Sie in einem Wiederherstellungsfall die Warteschlange zukünftiger Zeitstempel wiederhergestellt haben, aber keine Zeitgeberaufgabe, die WindowOperator
auslöst (was dann die Timer-Ereignisse auslöst). Sie müssen also auf ein neues Element warten, das eine neue Timer-Aufgabe registriert. Sobald diese Timer-Task ausgelöst wird, werden alle anderen Timer-Ereignisse mit einem niedrigeren Zeitstempel ausgeführt.
Diese Subtilität gilt nicht für die Ereigniszeitverarbeitung, da Sie keine Timer-Task haben, die die WindowOperator
Wasserzeichen auslöst.