SQS


角色

Producer、Meeeage、Queue、Consumer

graph LR;  
    A(Producer)-->B(Message,max=256k);  
    B-->C(Queue);  
    C-->D(Consumer);  

資料量過大可將處理完的檔案放置S3

消息不可見性,避免任務重複處理

當第一個Consumer拉取之後,會將消息改成Invisibility(消息不可見)

當使用完Message之後,Consumer會傳送Delete Message訊息,避免重複取用

w:600 h:400

處理順序

FIFO

Standard

w:600 h:400

小結

最常使用場景就是用來處理大運算無法即時回應的任務

  1. 影片轉檔處理(Youtube)
  2. 蝦皮下訂單(直接先產生訂單編號,帳款資訊、購物車轉訂單後續處理)
  3. 註冊會員(先儲存會員資料,後續觸發生日檢查、Coupon券發送、發送簡訊)

Producer 接受使用者任務後,將其轉化為Message,並轉存在Queue裡面。
Consumer會按照我方設定的輪詢方式(Short Polling/Long Polling)去存取Queue,併發取Message進行處理。處理過程中,會讓消息進入不可見時限(Visibility timeout),讓消息避免被重複處理。

Redis、Kafka、RabbitMQ 都有類似的功能,都可以拿來實作在EGO上