Timeout Einstellungen
Die Funktionsbausteine von TC3 IoT Functions enthalten mehrere Timeout Einstellungen, die dem Benutzer helfen können, Fehler bei der Wiederholung von Operationen zu behandeln. Im folgenden Abschnitt werden die verschiedenen Timeout Einstellungen näher erläutert.
RequestTimeout
Der RequestTimeout kann entweder global auf eine Instanz von FB_IotFunctions_Connector oder individuell auf eine Instanz von FB_IotFunctions_Message gesetzt werden. Individuelle Einstellungen haben immer Vorrang vor globalen Einstellungen. Der RequestTimeout arbeitet eng mit der Einstellung MessageRetryInterval zusammen.
Der RequestTimeout gibt an, wann ein Nachrichtenoperation (Lesen/Schreiben) abläuft. Wenn beispielsweise RequestTimeout auf 10000 eingestellt ist, wird ein Lesevorgang nach 10 Sekunden abgebrochen, wenn keine Daten empfangen wurden. Wenn die Daten innerhalb von 10 Sekunden empfangen werden, wird der Vorgang sofort beendet.
MessageRetryInterval
Das MessageRetryInterval kann entweder global auf eine Instanz von FB_IotFunctions_Connector oder individuell auf eine Instanz von FB_IotFunctions_Message gesetzt werden. Individuelle Einstellungen haben immer Vorrang vor globalen Einstellungen. Das MessageRetryInterval arbeitet eng mit der Einstellung RequestTimeout zusammen.
Das MessageRetryInterval gibt die Zeitspanne in [ms] an, in dem eine Nachrichtenoperation erneut versucht wird. Die Obergrenze des Intervalls ist immer der RequestTimeout. Wenn zum Beispiel RequestTimeout auf 10000 und MessageRetryInterval auf 1000 gesetzt ist, wird ein Lesevorgang zehnmal wiederholt, bevor RequestTimeout ausgelöst wird und der Lesevorgang ein Zeitlimit erreicht.
CumulativeTimeout
Der CumulativeTimeout kann auf Instanzen von FB_IotFunctions_Request gesetzt werden, wenn Nachrichtenoperationen synchronisiert werden (siehe Synchronisierung von Nachrichtenoperationen).
Der Anwendungsfall sieht folgendermaßen aus (Beispiel):
- Es gibt drei Lesevorgänge, die synchronisiert werden sollten.
- Jeder Lesevorgang kommt von einem anderen Kanal
- RequestTimeout ist global auf 10000 ms eingestellt
- CumulativeTimeout ist global auf 3000 ms eingestellt
- Nach 8000 ms kommt die erste Nachricht über Kanal 1 an.
- Da bis zum Erreichen der RequestTimeout-Zeit nur noch 2000 ms verbleiben, wird die CumulativeTimeout-Zeit zur verbleibenden RequestTimeout-Zeit addiert, um ein Timeout der gesamten Anfrage zu verhindern. Die RequestTimeout-Zeit beträgt dann 5000 ms. Dadurch erhält die Anfrage mehr Zeit, um Daten über die beiden anderen Lesevorgänge zu sammeln. Wenn nach 5000 ms keine Daten für die beiden anderen Operationen vorliegen, wird die gesamte Anfrage abgebrochen.