某個 Lambda 函式由 SQS 佇列觸發,並呼叫一個第三方 ML API,該 API 最長可能需要 60 秒才能回應。Lambda 的逾時設定為 65 秒。開發人員發現該函式有時會處理重複的 SQS 訊息。開發人員應該如何修改才能讓函式不再處理重複訊息?
選擇一個答案
點擊一個選項來檢查您的答案。
正確答案: 將 SQS 佇列的 visibility timeout 設定為大於第三方 API 的最大回應時間。.
為什麼這是答案
當 Lambda 函式從 SQS 佇列處理訊息時,如果函式在 visibility timeout 期間內未成功刪除訊息,SQS 會將該訊息重新放回佇列,使其對其他消費者可見,這可能導致重複處理。由於第三方 ML API 最長可能需要 60 秒回應,而 Lambda 的逾時設定為 65 秒,如果 SQS 的 visibility timeout 小於 60 秒,即使 Lambda 函式最終成功處理了訊息,但因為它在 visibility timeout 結束前未能刪除訊息,SQS 會將訊息重新傳遞。因此,將 SQS 佇列的 visibility timeout 設定為大於第三方 API 的最大回應時間(例如 65 秒以上),可以確保 Lambda 函式有足夠的時間處理訊息並將其從佇列中刪除,從而避免重複處理。 增加 Lambda 函式的記憶體分配通常用於改善效能,但不能解決重複訊息問題
通過考試 — 無需無休止地尋找答案
集中一處獲取此考試的所有核實題目和解釋,節省數小時的準備時間。1,000 多種認證 · 20 多種語言 · 免費開始。
更快通過您的考試 → 無需信用卡