Amazon SQS - AWS 方案指引

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

Amazon SQS

Amazon SQS 支援標準佇列,其不保證排序,而 FIFO 佇列則保證在指定的訊息群組中排序。

佇列是編目微服務的一種常見方法,可為訊息提供長達 14 天的耐用儲存。佇列由生產者填入,並由取用者耗盡。當您以取用者 AWS Lambda 身分使用 時,您可以將 SQS 佇列設定為事件來源。在此情況下,Lambda 服務事件來源映射 (ESM) 會為您輪詢佇列,並在 Lambda 函數可用時傳送訊息給您的 Lambda 函數。在 Amazon Elastic Container Service (Amazon ECS) 或 Amazon Elastic Compute Cloud (Amazon EC2) 等其他類型的運算服務上執行的微服務,必須實作自己的輪詢機制,以便在新訊息可用時從佇列中擷取新訊息。

適用於 Amazon SQS 的 Lambda ESM 也支援訊息篩選,這可讓您根據訊息內文的內容,僅處理佇列中的訊息子集。

輪詢

Amazon SQS 支援短輪詢和長輪詢訊息。短輪詢會查詢伺服器子集以尋找可用的訊息,並立即傳回這些訊息。不過,它可能不會傳回所有可用的訊息。當您的應用程式需要盡快取用訊息,或無法容忍等待更長的時間時,這會很有用。

長輪詢會等到已超過可設定的時間量或已接收可設定的訊息數量,再傳回訊息。這可能會減少空輪詢的數量,也就是未傳回訊息的輪詢數量,尤其是未接收許多訊息的佇列。減少空輪詢數量可以降低 Amazon SQS 成本,因為此服務會針對每個請求收取費用,而每個輪詢操作都是請求。

指引

在下列情況下,佇列是不錯的選擇:

  • 您想要解耦元件,不需要在它們之間進行同步通訊。

  • 您正在具有不同可用性服務層級協議 (SLAs) 或服務層級目標 (SLOs元件之間進行通訊。

  • 您通常有一組訊息的單一取用者。

如果出現下列情況,請考慮使用替代選項:

  • 您需要同步通訊。

  • 您需要複雜的路由邏輯,才能傳送訊息給正確的消費者。