您正在 Azure Service Bus 上設計一個訂單處理工作流程。同一個 OrderID 的所有訊息都必須以嚴格的 FIFO 順序處理,並且您需要跨訊息維護每個訂單的狀態,以追蹤工作流程階段。您應該怎麼做?
選擇一個答案
點擊一個選項來檢查您的答案。
正確答案: 在目標佇列或訂閱上啟用 RequiresSession。, 將訂單中所有訊息的 SessionId 設定為 OrderID。, 使用 SessionReceiver 接收訊息,並使用 GetState/SetState 來持久化每個訂單的工作流程狀態。.
為什麼這是答案
為確保相同 OrderID 的訊息以嚴格的 FIFO 順序處理並維護狀態,Azure Service Bus 的工作階段 (Sessions) 功能是關鍵。首先,您必須在目標佇列或訂閱上啟用 RequiresSession,這會指示 Service Bus 僅處理具有工作階段 ID 的訊息。接著,將訂單中所有訊息的 SessionId 設定為相同的 OrderID,這樣 Service Bus 就能將這些訊息視為屬於同一個邏輯工作階段。最後,使用 SessionReceiver 來接收這些工作階段訊息,並利用 GetState 和 SetState 方法來持久化每個訂單的工作流程狀態,因為這些狀態是與工作階段綁定的。將 MessageId 設定為 OrderID 不會保證 FIFO 順序,因為 MessageId 僅用於識別單一訊息。使用訊息延遲來維護 FIFO 順序是不可靠且不適合此情境。
通過考試 — 無需無休止地尋找答案
集中一處獲取此考試的所有核實題目和解釋,節省數小時的準備時間。1,000 多種認證 · 20 多種語言 · 免費開始。
更快通過您的考試 → 無需信用卡