使用各自執行獨立功能的個別元件建立應用程式是改善可擴展性和可靠性的最佳實務。您可以使用訊息佇列在任何磁碟區的應用程式元件之間傳送、存放和接收訊息,不會遺漏訊息或需要其他服務永久可用。

訊息佇列提供多種選項,可讓您指定訊息交付的方法、優先排序的依據及如何保護安全,如下所述。您也可以使用散發設計模式中的發佈/訂閱簡訊結合佇列。

什麼是訊息佇列?

開始使用 Amazon Simple Queue Service (SQS) 只需三個簡單的命令。

免費試用 Amazon SQS

AWS 免費方案包含 100 萬個 Amazon Simple Queue Service (SQS) 請求。

查看 AWS 免費方案詳細資訊 »


大多數的訊息佇列同時提供推送和提取兩種選項來擷取訊息。提取表示持續查詢佇列是否有新訊息。推送表示訊息來時通知取用者 (這也稱為發佈/訂閱簡訊)。您也可以使用長時間輪詢,允許提取等待一段指定的時間,在新訊息抵達之後才完成。

許多訊息佇列支援為訊息設定特定的交付時間。如果您需要所有訊息都有共同的延遲,可以設定延遲佇列。

訊息佇列可存放多份訊息副本以備冗餘和高可用性之用,並在發生通訊失敗或錯誤時重傳訊息,以確保這些訊息至少交付一次。

當無法忍受出現重複項目時,FIFO (先入先出) 訊息佇列會自動篩選重複項目,以確保每則訊息只交付一次 (而且只有一次)。

會先處理這些佇列中最舊 (或第一個) 項目 (有時候稱為佇列的「頭」)。要進一步了解 Amazon SQS FIFO 佇列,請參閱開發人員指南

您也可以閱讀我們的部落格:Using Python and Amazon SQS FIFO Queues to Preserve Message SequencingHow the Amazon SQS FIFO API WorksFIFO Queues with Exactly-Once Processing & Deduplication

當佇列中有無法成功處理的訊息時,就可以將它們傳送到無效字母佇列。這樣便於將這些訊息先放置一旁以備後續檢驗,而不會阻礙佇列處理的流程,或是將 CPU 週期耗費在可能永遠無法成功使用的訊息上。

要進一步了解無效字母佇列,請閱讀我們的部落格 Using Amazon SQS Dead-Letter Queues to Control Message Failure。要了解如何在 Amazon SQS 中使用無效字母佇列,請參閱我們的開發人員指南

一般而言,您可以對訊息指定優先順序來決定它加入佇列的哪個位置,這樣可確定較高優先順序的訊息可跳到佇列的前面以便優先處理。

大多數訊息佇列都可盡力提供最佳排序,這種方式可確定訊息一般會依照傳送的相同順序交付,而且訊息至少交付一次。

毒藥是特殊的訊息類型,可以收到,但不會處理。它使用一種機制對取用者傳送一個結束工作的訊息,所以它不會再等待新的輸入,這就類似於關閉用戶端/伺服器模型中的通訊端。

訊息佇列會驗證嘗試存取佇列的應用程式,並允許您使用加密來加密透過網路傳送及位於佇列本身的訊息。要進一步了解 AWS 上的佇列安全,請閱讀我們的部落格 Server-Side Encryption for Amazon Simple Queue Service (SQS)。您也可以在我們的開發人員指南中進一步了解 Amazon SQS 的安全功能。

只需三個簡單的命令即可免費試用。

免費試用
blank