如何 AWS Flow Framework 為 Java 工作原理 - AWS Flow Framework 對於爪哇

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

如何 AWS Flow Framework 為 Java 工作原理

For Java 可與 Amazon SWF 搭配使用,讓您輕鬆建立可擴展且容錯的應用程式,以執行可能長時間執行或遠端執行的非同步任務。 AWS Flow Framework 在「你好世界!」 中的範例什麼是 AWS Flow Framework 爪哇?介紹了如何使用實作基本工作流程應用程式的基礎知識。 AWS Flow Framework 本節提供有關 AWS Flow Framework 應用程式運作方式的概念資訊。第一節摘要說明應用 AWS Flow Framework 程式的基本結構,其餘部分提供有關應用程 AWS Flow Framework 式運作方式的進一步詳細資訊。

Amazon SWF 超時類型

為確保工作流程執行正確執行,Amazon SWF 可讓您設定不同類型的逾時。有些逾時會指定工作流程總共可以執行多久。有些逾時則指定活動任務要多久才能指派給工作者,以及從排程開始要多久才可以完成。Amazon SWF API 中的所有逾時時間都會以秒為單位指定。Amazon SWF 也支援該字串NONE做為逾時值,表示沒有逾時。

對於與決策任務和活動任務相關的逾時,Amazon SWF 會在工作流程執行歷程記錄中新增事件。事件的屬性提供有關發生的逾時類型以及哪些決策任務或活動任務受到影響的資訊。Amazon SWF 也會排程決策任務。當決策程序接收到新的決策任務時,它會看到歷史記錄中的超時事件,並通過調用操作採取適當的RespondDecisionTaskCompleted操作。

任務從排程起到結束的這段時間,視為開啟。因此,任務在工作者處理它時會回報為開啟。當工作者回報任務為完成取消失敗時,任務即結束。Amazon SWF 也可能因為逾時而關閉任務。

工作流程和決策任務的逾時

下圖示範工作流程和決策逾時與工作流程生命週期的關係:

工作流程的生命週期,有逾時

有兩種逾時類型與工作流程和決策任務相關:

  • 工作流程開始至關閉 (timeoutType: START_TO_CLOSE) — 此逾時指定完成工作流程執行所需的時間上限。它在工作流程註冊期間設為預設值,但可在工作流程開始後用不同的值覆寫。如果超過此逾時,Amazon SWF 會關閉工作流程執行,並將類型WorkflowExecutionTimedOut為的事件新增至工作流程執行歷程記錄。除 timeoutType 之外,事件屬性還會指定對此工作流程執行生效的 childPolicy。子政策指定如果父工作流程執行逾時或終止,子工作流程執行的處理方式。例如,如果 childPolicy 設為 TERMINATE,則子工作流程執行會予以終止。一旦工作流程執行逾時,除可見度呼叫外,您無法對它採取任何動作。

  • 決策任務開始至關閉 (timeoutType: START_TO_CLOSE) — 此逾時指定對應決策程式完成決策任務所需的時間上限。它是在工作流程型註冊期間設定。如果超過此逾時,任務會在工作流程執行歷程記錄中標示為逾時,而 Amazon SWF 會在工作流程歷程記錄中新增類型DecisionTaskTimedOut事件。這些事件屬性會包含當此決策任務排程 (scheduledEventId) 及啟動時 (startedEventId) 所對應的事件 ID。除了新增事件之外,Amazon SWF 還會排程新的決策任務,以提醒決策程式此決策任務逾時。此逾時發生後,使用 RespondDecisionTaskCompleted 完成逾時決策任務的嘗試會失敗。

活動任務的逾時

下圖示範逾時與活動任務生命週期的關係:

任務的生命週期,有逾時

有四種逾時類型與活動任務相關:

  • 活動任務開始至關閉 (timeoutType: START_TO_CLOSE) — 此逾時指定活動 Worker 收到任務後處理任務所需的時間上限。嘗試使用RespondActivityTaskCanceledRespondActivityTaskCompleted和關閉逾時的活動任務RespondActivityTaskFailed將失敗。

  • 活動工作活動訊號 (timeoutType: HEARTBEAT) — 此逾時指定工RecordActivityTaskHeartbeat作在透過動作提供進度之前,可執行的時間上限。

  • 啟動的活動任務排程 (timeoutType: SCHEDULE_TO_START) — 此逾時指定如果沒有工作者可用來執行任務,Amazon SWF 會在逾時活動任務之前等待多久。一旦逾時,過期的任務就會不指派給其他工作者。

  • 要關閉的活動任務排程 (timeoutType: SCHEDULE_TO_CLOSE) — 此逾時指定任務從排定到完成的時間可能需要多長時間。最佳作法是,此值不應大於工作逾時和作業 schedule-to-start 逾時的總和。 start-to-close

注意

每種逾時類型都有預設值,一般設為 NONE (無限)。但是任何活動執行的時間上限都限制在一年。

您是在活動類型註冊期間設定這些預設值,但在排程活動任務時還可使用新值加以覆寫。當其中一項逾時發生時,Amazon SWF 會在工作流程歷程記錄中新ActivityTaskTimedOut增類型事件。此事件的 timeoutType 值屬性會指定這些逾時中的哪一個會發生。這些逾時每一個的 timeoutType 值都會出現在括號中。這些事件屬性也會包含當活動任務排程 (scheduledEventId) 及啟動時 (startedEventId) 所對應的事件 ID。除了新增事件之外,Amazon SWF 還會排程新的決策任務,以警示決策程式發生逾時。