

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

# Amazon SQS、Amazon SNS 或 Amazon EventBridge？
<a name="sns-or-sqs-or-eventbridge"></a>

**了解差異並挑選適合您的差異** 


|  |  | 
| --- |--- |
|  **用途**  |  了解 Amazon SQS、Amazon SNS 和 EventBridge 之間的差異，並判斷哪個服務最適合您的需求。  | 
|  **上次更新**  |  2024 年 7 月 31 日  | 
|  **涵蓋的服務**  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/decision-guides/latest/sns-or-sqs-or-eventbridge/sns-or-sqs-or-eventbridge.html)  | 

## 簡介
<a name="introduction"></a>

 在 上建置應用程式時 AWS，您可能需要協助選擇正確的服務來處理簡訊、事件驅動架構和解耦元件。 為這些目的 AWS 提供三個關鍵服務：Amazon Simple Queue Service (Amazon SQS)、Amazon Simple Notification Service (Amazon SNS) 和 Amazon EventBridge （先前稱為 CloudWatch Events)。
+  Amazon SQS 是一種全受管訊息佇列服務，可解耦和擴展微型服務、分散式系統和無伺服器應用程式。
+  Amazon SNS 是一種高可用性、耐用且安全的 pub/sub 訊息服務，可讓解耦的應用程式使用發佈訂閱模型彼此通訊。
+  Amazon EventBridge 是一種無伺服器事件匯流排，可讓您使用來自各種來源的資料來連接應用程式，並將其路由至類似目標，以更輕鬆地建置事件驅動型架構 AWS Lambda。

雖然這三種服務都有助於解耦元件之間的通訊，但它們的基礎架構、使用案例和功能有所不同。

以下是這些服務之間主要差異的高階檢視，讓您開始使用。


|  **類別**  |  **Amazon SQS**  |  **Amazon SNS**  |  **EventBridge**  | 
| --- | --- | --- | --- | 
|  通訊模型  |  提取型 （消費者從佇列輪詢訊息）  |  以推送為基礎的 （訂閱者在發佈時收到訊息）  |  推送型。事件驅動 （規則比對事件和路由到目標）  | 
|  Persistence  |  訊息會持續存在，直到使用完畢或過期為止  |  訊息不會保留；即時交付給訂閱者  |  事件不會保留；即時處理  | 
|  交付保證  |  至少傳遞一次  |  HTTP/S At-least-once，Lambda 和 Amazon SQS 至少交付一次  |  至少傳遞一次  | 
|  訊息排序  |  FIFO First-In-First-Out) 佇列可確保嚴格排序  |  Amazon SNS FIFO 主題保證順序  |  無訂購保證  | 
|  訊息篩選  |  Amazon SQS 無法根據訊息決定消費者。使用 Amazon SNS 訊息篩選搭配 Amazon SQS 來達成。 |  根據訊息中繼資料和 FIFO 主題、訊息內容使用訂閱篩選條件政策進行訊息篩選  |  複雜的事件模式比對和內容型篩選  | 
|  支援的訂閱者  |  提取型消費者 （例如 Amazon EC2 或 Lambda)  |  HTTP/S 端點、電子郵件、SMS、行動推送、Lambda、Amazon SQS  |  AWS 服務、Lambda、API 目的地、其他 AWS 帳戶中的事件匯流排  | 
|  典型使用案例  |  解耦微服務、緩衝請求、非同步處理任務  |  廣發性通知、pub/sub 訊息、行動推播通知  |  事件驅動型架構、即時串流處理、跨帳戶事件共用  | 
|  與其他 整合 AWS 服務  |  Lambda、CloudWatch AWS KMS、IAM  |  Lambda、Amazon SQS、行動推播 AWS KMS、IAM  |  Lambda、Step Functions、Amazon SQS、Amazon SNS、Kinesis、SageMaker AI、CloudWatch、IAM  | 

## 差異的詳細資訊
<a name="differences"></a>

 探索 Amazon SQS、Amazon SNS 和 EventBridge 在八個關鍵領域之間的差異。這些涵蓋通訊模型、持久性、訊息排序、篩選、整合、使用案例、可擴展性和定價。

------
#### [ Communication model ]

**Amazon SQS**
+ 提取型模型，消費者主動從佇列輪詢訊息，允許精細控制訊息處理率和消費者的獨立擴展。

**Amazon SNS**
+ 以推送為基礎的模型，訂閱者會在發佈訊息時即時接收訊息，以便立即將訊息交付給多個訂閱者。

**Amazon EventBridge**
+ 事件驅動型模型，其中事件符合預先定義的規則，並路由至目標服務進行處理，有助於建置反應式的事件驅動型架構。

------
#### [ Persistence and delivery guarantees ]

**Amazon SQS**
+ 訊息會保留在佇列中，直到取用或過期為止，確保不會遺失訊息。at-least-once傳遞，保證每則訊息至少傳遞一次，可能會有重複的可能性。

**Amazon SNS**
+ 訊息不會保留，並即時交付給訂閱者。為 HTTP/S 訂閱者at-least-once交付，並為 Lambda 和 Amazon SQS 訂閱者提供恰好一次交付。

**Amazon EventBridge**
+ 事件不會保留並即時處理。確保僅處理一次，確保每個事件僅由目標服務處理一次。

------
#### [ Message ordering ]

**Amazon SQS 和 Amazon SNS**
+ Amazon SQS FIFO 佇列和 Amazon SNS FIFO 主題支援First-In-First-Out保證訊息排序，使其適合需要循序處理的案例。如需使用 Amazon SNS 和 Amazon SQS [排序訊息的詳細資訊，請參閱 FIFO 主題](https://docs.aws.amazon.com/sns/latest/dg/fifo-topic-message-ordering.html)的訊息排序詳細資訊。

**Amazon EventBridge**
+ EventBridge 不提供訊息排序保證，而是以任意順序將事件交付至目標。

------
#### [ Message filtering and routing ]

**Amazon SQS**
+ 透過可見性逾時 （防止重複處理） 和無效字母佇列 （處理失敗的訊息） 提供基本篩選功能。

**Amazon SNS**
+ 使用訂閱篩選條件政策提供訊息篩選，允許訂閱者根據訊息屬性選擇性地接收訊息。

**Amazon EventBridge**
+ 支援進階事件模式比對和內容型篩選，可根據事件內容進行精細的事件處理和路由。

------
#### [ Supported subscribers and integrations ]

**Amazon SQS**
+ 支援提取型取用者，例如 Amazon EC2 執行個體或 Lambda 函數，這些函數會主動從佇列擷取訊息。

**Amazon SNS**
+ 支援各種訂閱者，包括 HTTP/S 端點、電子郵件、SMS、行動推播通知、Lambda 函數和 Amazon SQS 佇列。

**Amazon EventBridge**
+ 與許多 整合 AWS 服務，例如 Lambda、Step Functions、Amazon SQS、Amazon SNS、Kinesis 和 SageMaker AI，允許根據預先定義的規則進行事件路由。EventBridge 也有許多與第三方產品的內建整合，例如 PagerDuty、DataDog、NewRelilc。若要查看完整清單，請造訪 [Amazon EventBridge 目標](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html)。

------
#### [ Typical use cases ]

**Amazon SQS**
+ 通常用於非同步解耦微服務、緩衝請求和處理任務，以實現獨立擴展和正常的故障處理。

**Amazon SNS**
+ 通常用於廣發通知、pub/sub 訊息和行動推播通知，有助於同時將訊息廣播給多個訂閱者。

**Amazon EventBridge**
+ 非常適合建置事件驅動型架構、即時串流處理和跨帳戶事件共用，允許跨多個服務建置被動式系統。

------
#### [ Scalability and performance ]

**Amazon SQS**
+ 高度可擴展，根據訊息數量和消費者自動擴展，為訊息處理提供高輸送量。

**Amazon SNS**
+ 可擴展性高，能夠將訊息傳遞給大量訂閱者，具有彈性擴展以處理不斷增加的發佈和訂閱需求。

**Amazon EventBridge**
+ 根據傳入事件流量自動擴展，提供低延遲事件處理和近乎即時交付至目標。

------
#### [ Pricing ]

**Amazon SQS**
+ 根據 API 請求數量和傳輸的資料定價，免費方案包括每月免費 API 請求額度和資料傳輸。

**Amazon SNS**
+ 定價是以 API 請求數量、傳送的通知和傳輸的資料為基礎。Amazon SNS SMS 訊息會透過 AWS 最終使用者傳訊計費。

**Amazon EventBridge**
+ 根據發佈的事件數量和目標調用定價，免費方案包含每月免費事件和調用額度。

------

## 使用
<a name="use"></a>

------
#### [ Amazon SQS ]
+  **開始使用 Amazon SQS** 

  取得設定和使用 Amazon SQS 的step-by-step說明。它涵蓋主題，例如建立佇列、傳送和接收訊息，以及設定佇列屬性。

  [探索指南](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) 
+  **Amazon SQS 教學課程** 

  演練使用 Amazon SQS 解耦簡單應用程式元件的實際範例。它示範如何建立佇列、傳送訊息至佇列，以及使用 AWS SDKs 從佇列處理訊息。

  [探索教學課程](https://aws.amazon.com/getting-started/hands-on/send-messages-distributed-applications/) 
+  **協調佇列型微服務** 

  了解如何設計和執行無伺服器工作流程，以協調以訊息佇列為基礎的微服務。

  [探索教學課程](https://aws.amazon.com/tutorials/orchestrate-microservices-with-message-queues-on-step-functions/) 
+  **傳送散發事件通知** 

  了解如何使用 Amazon SQS 和 Amazon SNS 實作廣發訊息案例。

  [探索教學課程](https://aws.amazon.com/getting-started/hands-on/send-fanout-event-notifications/)

------
#### [ Amazon SNS ]
+  **開始使用 Amazon SNS** 

  設定和使用 Amazon SNS 的step-by-step演練。它涵蓋主題，例如建立主題、訂閱主題的端點、發佈訊息，以及設定存取許可。

  [探索指南](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)  
+  **使用 Amazon SNS 和 Amazon SQS 篩選發佈至主題的訊息** 

  了解如何使用 Amazon SNS 的訊息篩選功能

  [探索教學課程](https://aws.amazon.com/tutorials/filter-messages-published-to-topics/) 
+  **Amazon SNS - 故障診斷** 

  了解如何檢視組態資訊、監控程序，以及收集有關 Amazon SNS 的診斷資料。

  [探索課程](https://explore.skillbuilder.aws/learn/course/external/view/elearning/14124/amazon-simple-notification-service-amazon-sns-troubleshooting)

------
#### [ EventBridge ]
+  **Amazon EventBridge 使用者指南** 

  此完整文件涵蓋的主題包括建立事件匯流排、定義事件規則、設定目標，以及與各種 整合 AWS 服務。

   [探索指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html)
+  **Amazon EventBridge 教學課程** 

   AWS 文件提供一系列教學課程，引導使用者了解使用 Amazon EventBridge 的不同使用案例和案例。這些教學課程涵蓋排程自動化任務、對 AWS 資源變更做出反應，以及與 整合等主題 AWS 服務。

   [探索教學課程](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-tutorial.html)
+  **AWS 無伺服器研討會 - 事件驅動架構**

  使用 Amazon EventBridge 和其他無 AWS 伺服器服務建置事件驅動型架構。此研討會會引導參與者完成建立事件匯流排、定義事件規則，以及根據事件觸發動作的程序。

  [探索研討會](https://event-driven-architecture.workshop.aws/)
+  **AWS 線上技術講座 - Amazon EventBridge 簡介** 

  取得 Amazon EventBridge 簡介，說明關鍵概念、功能和使用案例。技術講座包含示範和實際範例，協助使用者了解如何在其應用程式中利用 EventBridge。

  [觀看影片](https://www.youtube.com/watch?v=TXh5oU_yo9M)
+  **使用 Amazon EventBridge 建置事件驅動型應用程式** 

  此部落格文章探討使用 Amazon EventBridge 建置事件驅動型應用程式的程序。它提供建立事件匯流排、定義事件模式和設定目標以處理事件step-by-step指南。

   [閱讀部落格文章](https://aws.amazon.com/blogs/compute/building-an-event-driven-application-with-amazon-eventbridge/)
+  **使用 Amazon EventBridge 管道在事件生產者和消費者之間建立Point-to-Point整合** 

  探索 Amazon EventBridge Pipes，這是 EventBridge 的一項功能，透過提供一致且符合成本效益的方式在事件生產者和消費者之間建立point-to-point整合，讓您更輕鬆地建置事件驅動型應用程式，無需撰寫未區分的黏附程式碼。

   [閱讀部落格文章](https://aws.amazon.com/blogs/aws/new-create-point-to-point-integrations-between-event-producers-and-consumers-with-amazon-eventbridge-pipes/)

------