2016-03-30 3 views

Antwort

2

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.