Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
AWS Flow Framework So funktioniert Java
The AWS Flow Framework for Java arbeitet mit Amazon SWF zusammen, um die Erstellung skalierbarer und fehlertoleranter Anwendungen für asynchrone Aufgaben zu vereinfachen, die lange dauern, remote oder beides ausführen können. Das „Hallo Welt!“ In den Beispielen Was ist AWS Flow Framework für Java? wurden die Grundlagen der Verwendung von AWS Flow Framework zur Implementierung grundlegender Workflow-Anwendungen vorgestellt. Dieser Abschnitt enthält konzeptionelle Informationen zur Funktionsweise von AWS Flow Framework Anwendungen. Der erste Abschnitt fasst die grundlegende Struktur einer AWS Flow Framework Anwendung zusammen, und die übrigen Abschnitte enthalten weitere Einzelheiten zur Funktionsweise von AWS Flow Framework Anwendungen.
Themen
- AWS Flow FrameworkGrundbegriffe: Anwendungsstruktur
- AWS Flow Framework— Grundkonzepte: Zuverlässige Ausführung
- AWS Flow FrameworkGrundkonzepte: Verteilte Ausführung
- AWS Flow Framework Grundlegende Konzepte: Aufgabenlisten und Aufgabenausführung
- AWS Flow Framework— Grundkonzepte: Skalierbare Webanwendungen
- AWS Flow FrameworkGrundkonzepte: Datenaustausch zwischen Aktivitäten und Workflows
- AWS Flow FrameworkGrundkonzepte: Datenaustausch zwischen Anwendungen und Workflow-Ausführungen
- Amazon SWF-Timeout-Typen
Amazon SWF-Timeout-Typen
Um sicherzustellen, dass Workflow-Ausführungen korrekt ausgeführt werden, können Sie mit Amazon SWF verschiedene Arten von Timeouts festlegen. Einige Zeitüberschreitungen legen fest, wie lange der Workflow insgesamt ausgeführt werden kann. Andere Zeitüberschreitungen legen fest, wie lange es dauern darf, bis Aktivitätsaufgaben einem Worker zugewiesen werden, und wie lange die Ausführung einer Aufgabe ab der Planung dauern darf. Alle Timeouts in der Amazon SWF SWF-API sind in Sekunden angegeben. Amazon SWF unterstützt die Zeichenfolge auch NONE
als Timeout-Wert, was bedeutet, dass es kein Timeout gibt.
Für Zeitüberschreitungen im Zusammenhang mit Entscheidungs- und Aktivitätsaufgaben fügt Amazon SWF dem Workflow-Ausführungsverlauf ein Ereignis hinzu. Die Attribute des Ereignisses geben Auskunft darüber, welche Art von Timeout eingetreten ist und welche Entscheidungs- oder Aktivitätsaufgabe betroffen war. Amazon SWF plant auch eine Entscheidungsaufgabe. Wenn der Entscheider die neue Entscheidungsaufgabe erhält, sieht er das Timeout-Ereignis in der Historie und ergreift die entsprechende Aktion, indem er die RespondDecisionTaskCompletedAktion aufruft.
Eine Aufgabe gilt vom Zeitpunkt der Planung bis zum Schließen der Aufgabe als offen. Für Aufgaben, die gerade von einem Worker verarbeitet werden, wird daher der Status "offen" gesendet. Eine Aufgabe ist geschlossen, wenn ein Worker sie als abgeschlossen, abgebrochen oder fehlgeschlagen meldet. Eine Aufgabe kann auch von Amazon SWF aufgrund eines Timeouts geschlossen werden.
Zeitüberschreitungen in Workflow- und Entscheidungsaufgaben
Die folgende Abbildung zeigt, wie Zeitüberschreitungen für Workflow- und Entscheidungsaufgaben sich auf die Lebensdauer eines Workflows auswirken:
Für Workflow- und Entscheidungsaufgaben gibt es zwei relevante Zeitüberschreitungstypen:
-
Workflow-Start to Close (
timeoutType: START_TO_CLOSE
) — Dieses Timeout gibt die maximale Zeit an, die bis zum Abschluss einer Workflow-Ausführung in Anspruch nehmen kann. Bei der Registrierung eines Workflows wird ein Standardwert festgelegt, der jedoch beim Starten des Workflows durch andere Werte überschrieben werden kann. Wenn dieses Timeout überschritten wird, schließt Amazon SWF die Workflow-Ausführung und fügt dem Workflow-Ausführungsverlauf ein Ereignis des Typs WorkflowExecutionTimedOuthinzu. Neben demtimeoutType
legen die Ereignisattribute auch diechildPolicy
fest, die sich auf die Workflow-Ausführung auswirkt. Die untergeordnete Richtlinie legt fest, wie mit untergeordneten Workflow-Ausführungen verfahren wird, wenn bei der übergeordneten Workflow-Ausführung eine Zeitüberschreitung auftritt oder sie anderweitig beendet wird. Wenn in derchildPolicy
beispielsweise TERMINATE festgelegt ist, werden die untergeordneten Workflow-Ausführungen beendet. Nachdem bei einer Workflow-Ausführung eine Zeitüberschreitung aufgetreten ist, können Sie als einzige Aktionen dafür noch Sichtbarkeitsaufrufe ausführen. -
Entscheidungsaufgabe von Anfang bis Ende (
timeoutType: START_TO_CLOSE
) — Dieses Timeout gibt die maximale Zeit an, die der entsprechende Entscheider benötigen kann, um eine Entscheidungsaufgabe abzuschließen. Sie wird während der Registrierung des Workflow-Typs festgelegt. Wenn dieses Timeout überschritten wird, wird die Aufgabe im Workflow-Ausführungsverlauf als Timeout markiert, und Amazon SWF fügt dem Workflow-Verlauf ein Ereignis des Typs DecisionTaskTimedOuthinzu. Die Ereignisattribute enthalten die IDs für die Ereignisse, die dem Zeitpunkt entsprechen, zu dem die Entscheidungsaufgabe geplant (scheduledEventId
) und gestartet (startedEventId
) wurde. Amazon SWF fügt nicht nur das Ereignis hinzu, sondern plant auch eine neue Entscheidungsaufgabe, um den Entscheider darüber zu informieren, dass bei dieser Entscheidungsaufgabe das Timeout überschritten wurde. Nach einer Zeitüberschreitung schlagen Versuche, die abgelaufene Entscheidungsaufgabe mitRespondDecisionTaskCompleted
abzuschließen, fehl.
Zeitüberschreitungen in Aktivitätsaufgaben
Die folgende Abbildung zeigt, wie Zeitüberschreitungen sich auf die Lebensdauer einer Aktivitätsaufgabe auswirken:
Für Aktivitätsaufgaben gibt es vier relevante Zeitüberschreitungstypen:
-
Aktivitätsaufgabe von Anfang bis Ende (
timeoutType: START_TO_CLOSE
) — Dieses Timeout gibt die maximale Zeit an, die ein Mitarbeiter für die Bearbeitung einer Aufgabe benötigen kann, nachdem der Mitarbeiter die Aufgabe erhalten hat. Versuche, eine Aktivitätsaufgabe mit RespondActivityTaskCanceled,, und zu schließen RespondActivityTaskCompleted, schlagen RespondActivityTaskFailedfehl. -
Activity Task Heartbeat (
timeoutType: HEARTBEAT
) — Dieses Timeout gibt die maximale Zeit an, die eine Aufgabe ausgeführt werden kann, bevor ihr Fortschritt durch die Aktion angezeigt wird.RecordActivityTaskHeartbeat
-
Zeitplan für den Start der Aktivitätsaufgabe (
timeoutType: SCHEDULE_TO_START
) — Dieses Timeout gibt an, wie lange Amazon SWF wartet, bis das Zeitlimit für die Aktivitätsaufgabe überschritten wird, wenn keine Mitarbeiter für die Ausführung der Aufgabe verfügbar sind. Nach der Zeitüberschreitung wird die abgelaufene Aufgabe keinem anderen Worker zugewiesen. -
Zeitplan für das Schließen der Aktivitätsaufgabe (
timeoutType: SCHEDULE_TO_CLOSE
) — Dieser Timeout gibt an, wie lange die Aufgabe von der geplanten bis zur Fertigstellung dauern kann. Es hat sich bewährt, dass dieser Wert nicht größer als die Summe aus Task-Timeout und schedule-to-start Task-Timeout sein sollte. start-to-close
Anmerkung
Jeder Zeitüberschreitungstyp verfügt übe einen Standardwert, in der Regel NONE
(unendlich). Die Höchstdauer für die Ausführung einer Aktivität ist jedoch auf ein Jahr beschränkt.
Die Standardwerte für diese Zeitüberschreitungen werden während der Registrierung des Aktivitätstyps festgelegt, können jedoch beim Planen der Aktivitätsaufgabe überschrieben werden. Wenn einer dieser Timeouts eintritt, fügt Amazon SWF dem Workflow-Verlauf ein Ereignis des Typs ActivityTaskTimedOuthinzu. Das Wertattribut timeoutType
dieses Ereignisses gibt an, welche dieser Zeitüberschreitungen aufgetreten ist. Der Wert von timeoutType
für jede Zeitüberschreitung ist in Klammern angegeben. Die Ereignisattribute enthalten auch die IDs für die Ereignisse, die dem Zeitpunkt entsprechen, zu dem die Aktivitätsaufgabe geplant (scheduledEventId
) und gestartet (startedEventId
) wurde. Zusätzlich zum Hinzufügen des Ereignisses plant Amazon SWF auch eine neue Entscheidungsaufgabe, um den Entscheider darüber zu informieren, dass das Timeout eingetreten ist.