[大話 AWS 雲端架構筆記] SQS
簡介 SQS 和使用方法和運作機制
Amazon Simple Queue Service
作為任務暫存器,不需要及時處理的任務可以丟進去存放
等系統有多餘的資源時再進行處理,可以解耦應用程式
graph LR; 消息產生-->消息存放-->消息取用;
Amazon SQS 不會自動刪除訊息,且不保證消費者會實際接收到訊息
名詞解釋
Producer
負責將使用者需求轉換成 Message,並轉送至 Queue
Message
在服務間傳遞的任務資訊
預設最大值256KB
大型檔案建議存放到 S3,Message 則紀錄檔案位置
Queue
存放待處理任務的訊息佇列,提供給 Consumer 取用
放到 Queue 裡的 Message 都有保留時間,時間一到就會被 SQS 刪除
預設保留時間為 4 天,可用範圍為 60 秒~1209600 秒 ( 14 天)
Consumer
從佇列中取出 Message 並按照內容進行任務處理
類型
Consumer 對 Queue 中的 Message 處理順序分為兩種
- Standard:散落不考慮順序
- FIFO:先進先出(First in first out)
消息可見性
避免任務重複處理以及設定 timeout 時間
Invisibility
當第一個 Consumer 拉取 Message 後,Message 就會進入 Invisibility 狀態
將 Message 暫時隱藏就不會被其他 Consumer 重複拉取
而在處理完 Message 後需要發送Delete Message
來避免重複處理
Visibility Timeout
當一個 Consumer 在接收某個 message 時
其他 Consumer 會有一段時間看不到該 message
當任務沒有在 timeout 時間內被處理完
在 timeout 後其他 Consumer 又可以看到這則 message,並開始處理
這代表一則訊息有可能會被傳送多次
Visibility Timeout 預設為 30 秒,下限為 0 秒,上限為 12 小時
拉取頻率
- Short polling:頻繁存取,預設情境
- Long polling:存取頻率較低,成本較少