在 Amazon SQS 中使用無效字母隊列 - Amazon Simple Queue Service

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

在 Amazon SQS 中使用無效字母隊列

Amazon SQS 支援無效字母佇列 (DLQ),其來源佇列可以針對未成功處理的訊息作為目標。DLQ 對於偵錯應用程式非常有用,因為您可以隔離未使用的訊息,以判斷處理不成功的原因。為了獲得最佳效能,最佳作法是將來源佇列和 DLQ 保持在同 AWS 帳戶 一個區域內。一旦訊息位於無效字母佇列中,您可以:

  • 檢查導致訊息移至無效字母佇列的例外狀況記錄。

  • 分析移至無效字母佇列的訊息內容,以診斷應用程式問題。

  • 判定您是否有給予消費者儲存的訊息處理時間。

  • 使用無效字母佇列重新磁碟機,將訊息移出效字母佇列。

在將佇列設定為無效字母佇列之前,您必須先建立新佇列。如需使用 Amazon SQS 主控台設定無效字母佇列的相關資訊,請參閱 了解如何使用 Amazon SQS 主控台設定無效字母佇列。如需無效字母佇列的說明,例如如何針對移至無效字母佇列的任何訊息設定警示,請參閱。使用 Amazon 為無效字母隊列創建警報 CloudWatch

使用無效字母佇列的原則

使用重新磁碟機原則來指定。maxReceiveCountmaxReceiveCount是取用者在將訊息移至無效字母佇列之前,可以從來源佇列接收訊息的次數。例如,如果設定maxReceiveCount為較低的值 (例如 1),則無法接收訊息會導致郵件移至無效字母佇列。為了確保您的系統能夠抵禦錯誤,請將 maxReceiveCount 設定得夠高,以允許足夠的重試。

再驅動允許政策指定哪些來源佇列能存取無效字母佇列。您可以選擇是否允許所有來源佇列、允許特定來源佇列,或拒絕所有來源佇列使用無效字母佇列。預設值允許所有來源佇列使用無效字母佇列。如果您選擇使用此byQueue選項允許特定佇列,則可以使用來源佇列 Amazon 資源名稱 (ARN) 指定最多 10 個來源佇列。若指定 denyAll,佇列就無法當作無效字母佇列。

瞭解無效字母佇列的訊息保留期

對於標準佇列,訊息的到期一律會以其原始排入佇列時間戳記為基礎。訊息被移至無效字母佇列時,排入佇列時間戳記不會變更。此ApproximateAgeOfOldestMessage測量結果會指出訊息移至無效字母佇列的時間,而非原始傳送訊息的時間。例如,假設訊息在移至無效字母佇列之前,在原始佇列中花費 1 天時間。如果無效字母佇列的保留期限為 4 天,則會在 3 天後從無效字母佇列中刪除訊息,而且 ApproximateAgeOfOldestMessage 為 3 天。因此,最佳實務是一律將無效字母佇列的保留期間設定為長於原始佇列的保留期間。

若為 FIFO 佇列,訊息移到無效字母佇列時,會重設訊息。此 ApproximateAgeOfOldestMessage 測量結果會指出訊息移到無效字母佇列的時間。在上面的相同範例中,訊息會在 4 天後從無效字母佇列中刪除,而且 ApproximateAgeOfOldestMessage 為 4 天。