Amazon SQS (Simple Queue Service

更新 發佈閱讀 5 分鐘

Amazon SQS (Simple Queue Service) 是 AWS 歷史最悠久(也是最核心)的服務之一。

一句話總結:它是用來「解耦 (Decouple)」應用程式元件的「緩衝區 (Buffer)」。

當你的系統前端流量暴增,後端處理不來時,SQS 就是那個負責「排隊」的地方,讓後端可以依照自己的步調慢慢處理,確保資料不流失。

以下是考試與實務設計的重點整理:


1. 核心概念:解耦 (Decoupling)

  • Producer (生產者):發送訊息到 SQS(例如:使用者下訂單)。
  • Queue (佇列):訊息暫存在這裡(最長可存 14 天,預設 4 天)。
  • Consumer (消費者):從 SQS 「拉取 (Pull)」 訊息並進行處理(例如:EC2 或 Lambda 處理訂單)。

為什麼這很重要?

如果沒有 SQS,前端直接呼叫後端,一旦後端掛掉,前端也會跟著掛(緊耦合)。有了 SQS,即使後端維修 1 小時,前端依然可以繼續收單,訊息乖乖在 SQS 裡排隊,等後端修好再處理。



2. 兩種佇列類型 (Queue Types) —— 考試必考!

這兩者的區別是 AWS 考試的經典題:

raw-image



3. 重要參數與功能 (Key Features)

A. Visibility Timeout (可見性逾時)

  • 機制:當 Consumer A 把訊息拿去處理時,這條訊息會有幾秒鐘對其他 Consumer 「隱形」。
  • 目的:防止多個 Consumer 處理同一條訊息。
  • 異常處理:如果 Consumer A 處理到一半掛掉(超過時間沒刪除訊息),訊息會重新出現在 Queue 中,讓 Consumer B 接手處理。

B. Dead Letter Queue (DLQ, 死信佇列)

  • 機制:如果一條訊息被 Consumer 處理失敗了很多次(例如超過 5 次),SQS 認為這條訊息有問題(毒藥訊息),就會把它移到 DLQ。
  • 目的:避免錯誤的訊息卡住整個系統,方便工程師事後排查 bug。

C. Short Polling vs. Long Polling

  • Short Polling:Consumer 問 SQS 有沒有信?SQS 馬上回傳(可能回傳空值),浪費錢與資源。
  • Long Polling (推薦):Consumer 問 SQS,如果沒有信,SQS 會等待幾秒(最多 20秒)直到有信才回傳。優點:省錢(減少 API 呼叫次數)、降低延遲。

4. 常見架構模式 (Architecture Patterns)

Auto Scaling 配合 SQS

  • 場景:電商促銷活動。
  • 設計:設定 CloudWatch 監控 SQS 的 ApproximateNumberOfMessagesVisible (排隊長度)。如果排隊訊息太多 →→ 觸發 Auto Scaling 新增 EC2 來消化訊息。如果沒訊息 →→ 減少 EC2 省錢。

Fan-out Pattern (扇出模式) —— SQS + SNS

  • 場景:使用者上傳頭像後,系統需要同時做三件事:1. 存檔、2. 產生縮圖、3. 發 Email。
  • 做法:應用程式發送訊息給 SNS Topic。SNS 平行推送給 3 個不同的 SQS Queues。3 個不同的 Worker 分別處理各自 Queue 裡的任務。

5. 超級比一比:SQS vs. SNS vs. Kinesis

raw-image


6. 考試關鍵字 (Keywords)

  • Decouple (解耦) →→ 必選 SQS。
  • Pull-based (拉取模式)。
  • Buffer / Batching (緩衝 / 批次處理)。
  • Order is important / No duplicates (順序重要 / 不可重複) →→ 選 FIFO Queue。
  • Application integration (應用程式整合)。
留言
avatar-img
留言分享你的想法!
avatar-img
郝信華 iPAS AI應用規劃師 學習筆記
32會員
544內容數
現職 : 富邦建設資訊副理 證照:經濟部 iPAS AI應用規劃師 初級+中級(數據分析) AWS Certified AI Practitioner (AIF-C01) 其他:富邦美術館志工
2025/12/03
Amazon GuardDuty 是一項全受管的 「智慧型威脅偵測服務 (Intelligent Threat Detection Service)」。 簡單來說,它就像是 AWS 帳戶裡的 「24 小時 AI 保全監視系統」。它不需要你在伺服器上安裝任何軟體(Agentless),而是透過分析
Thumbnail
2025/12/03
Amazon GuardDuty 是一項全受管的 「智慧型威脅偵測服務 (Intelligent Threat Detection Service)」。 簡單來說,它就像是 AWS 帳戶裡的 「24 小時 AI 保全監視系統」。它不需要你在伺服器上安裝任何軟體(Agentless),而是透過分析
Thumbnail
2025/12/03
AWS CodeDeploy 是 AWS 提供的全受管 「自動化程式碼部署服務」。 它的核心任務很簡單:「把你的應用程式(程式碼),自動安裝並啟動到伺服器(EC2、地端)或無伺服器環境(Lambda、ECS)上。」 它是 AWS CI/CD 工具鏈 CodeCommit → CodeBu
2025/12/03
AWS CodeDeploy 是 AWS 提供的全受管 「自動化程式碼部署服務」。 它的核心任務很簡單:「把你的應用程式(程式碼),自動安裝並啟動到伺服器(EC2、地端)或無伺服器環境(Lambda、ECS)上。」 它是 AWS CI/CD 工具鏈 CodeCommit → CodeBu
2025/12/03
AWS Wavelength 是 AWS 專為 行動裝置應用程式 設計的邊緣運算服務。 一句話總結:「將 AWS 的運算與儲存資源,直接搬到電信業者(如 Verizon, KDDI, Vodafone 等)的 5G 機房內,實現超低延遲。」 這項服務是為了那些需要 「個位數毫秒 (Single-
Thumbnail
2025/12/03
AWS Wavelength 是 AWS 專為 行動裝置應用程式 設計的邊緣運算服務。 一句話總結:「將 AWS 的運算與儲存資源,直接搬到電信業者(如 Verizon, KDDI, Vodafone 等)的 5G 機房內,實現超低延遲。」 這項服務是為了那些需要 「個位數毫秒 (Single-
Thumbnail
看更多
你可能也想看
Thumbnail
如何查詢 CloudTrail Event history 使用 Event name 篩選 RequestSpotFleet CloudTrail Event history 使用 Resource name 篩選,該 Request ID (提提知道ID) 使用上述查詢,目的是為了
Thumbnail
如何查詢 CloudTrail Event history 使用 Event name 篩選 RequestSpotFleet CloudTrail Event history 使用 Resource name 篩選,該 Request ID (提提知道ID) 使用上述查詢,目的是為了
Thumbnail
由於客戶需要透過  Cost Explorer 來監控 ECS Fargate tasks 成本,ECS 設置需要的 Tag 標籤, AWS Billing (Cost allocation tags)啟用 Tag 後,還是沒出現。 原因是,ECS Cluster 本生沒有產生費用,故才未
Thumbnail
由於客戶需要透過  Cost Explorer 來監控 ECS Fargate tasks 成本,ECS 設置需要的 Tag 標籤, AWS Billing (Cost allocation tags)啟用 Tag 後,還是沒出現。 原因是,ECS Cluster 本生沒有產生費用,故才未
Thumbnail
Fleet Manager (AWS Systems Manager 的功能) 是統一的使用者界面 (UI) 體驗,可助您遠端管理在 AWS 或內部部署上執行的受管節點 利用 Fleet Manager,您可以從單一主控台檢視整個伺服器機群的運作狀態和效能狀態 Fleet Manager 有哪些
Thumbnail
Fleet Manager (AWS Systems Manager 的功能) 是統一的使用者界面 (UI) 體驗,可助您遠端管理在 AWS 或內部部署上執行的受管節點 利用 Fleet Manager,您可以從單一主控台檢視整個伺服器機群的運作狀態和效能狀態 Fleet Manager 有哪些
Thumbnail
以下是限制 S3 bucket 訪問 HTTPS 的方法 測試 S3 存儲桶訪問 S3 bucket 通常允許 HTTP 和 HTTPS 訪問 AWS CLI 預設通常使用 HTTPS 向 AWS 服務發送請求 https://docs.aws.amazon.com/zh_tw/cli/l
Thumbnail
以下是限制 S3 bucket 訪問 HTTPS 的方法 測試 S3 存儲桶訪問 S3 bucket 通常允許 HTTP 和 HTTPS 訪問 AWS CLI 預設通常使用 HTTPS 向 AWS 服務發送請求 https://docs.aws.amazon.com/zh_tw/cli/l
Thumbnail
有這一篇原因是工作上,建立 OU 時,會自動新增額外的 FullAWSAccess 規則,但原本就會有預設Root OU繼承的FullAWSAccess,等於會有兩組一樣的規則,故所以詢問了AWS Support。 先謝謝 AWS 技術支援工程師 George 細心說明~ SCP很重要的
Thumbnail
有這一篇原因是工作上,建立 OU 時,會自動新增額外的 FullAWSAccess 規則,但原本就會有預設Root OU繼承的FullAWSAccess,等於會有兩組一樣的規則,故所以詢問了AWS Support。 先謝謝 AWS 技術支援工程師 George 細心說明~ SCP很重要的
Thumbnail
可以分析源代碼並檢查在遷移到 AWS Graviton 時需要更改的過時運行library 優化 aws 成本的方法之一是遷移到並採用具有高性價比的AWS Graviton 推薦使用AWS Graviton,從可持續性的角度來看,它有很好的表現 但有需要注意的地方: 不適用於所有操作系統和實
Thumbnail
可以分析源代碼並檢查在遷移到 AWS Graviton 時需要更改的過時運行library 優化 aws 成本的方法之一是遷移到並採用具有高性價比的AWS Graviton 推薦使用AWS Graviton,從可持續性的角度來看,它有很好的表現 但有需要注意的地方: 不適用於所有操作系統和實
Thumbnail
每個 AWS 帳戶所對應的Availability Zones會有所不同,查看方式可以至EC2 Console 中的EC2 Dashboard。
Thumbnail
每個 AWS 帳戶所對應的Availability Zones會有所不同,查看方式可以至EC2 Console 中的EC2 Dashboard。
Thumbnail
1.首先 這是 “AWS 上的工作負載發現” 的解決方案,我嘗試了一下,覺得很方便,所以介紹一下~ https://aws.amazon.com/tw/solutions/implementations/workload-discovery-on-aws/ 2. 部署 官方提供 CloudF
Thumbnail
1.首先 這是 “AWS 上的工作負載發現” 的解決方案,我嘗試了一下,覺得很方便,所以介紹一下~ https://aws.amazon.com/tw/solutions/implementations/workload-discovery-on-aws/ 2. 部署 官方提供 CloudF
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News