Skip to main content

SQS / SWF / SNS / MQ / MSK / Kinesis

SQS (Simple Queue Service)

  • To de-couple your infrastructure
  • Pull-based
  • Message are 256KB in size
  • Message kept in queue for 1min to 14days
    • Default is 4 days
  • Standard SQS:
    • 至少交付一次,可能會重複
    • 保持高效率,沒有保證順序
  • FIFO SQS:
    • 不會consume到重複訊息
    • 犧牲效率,保證順序
  • Visibility Time
    • Timeout設定,超過這個時間沒處理完,message會讓其他人有機會consume
    • 是造成重複遞送的主因
    • Max to 12hr
    • 如果job要做很久,把Visibility Time提高,讓EC2 / Lambda有更多時間把事做完
  • Polling
    • Short Polling: 即使沒訊息也會return
    • Long Polling: 等到有訊息,或polling timeout才會return
      • 可以用來省錢,因為request數量會變低
  • 省錢有幾個方法:
    • 改用long-polling
    • 降低message size

SNS (Simple Notification Service)

  • Push-based message service
  • 可以將資料送進SQS Standard
    • FIFO還沒支援

SWF (Simple Workflow Service)

  • Workflow executions
  • 可以存放到1 year
  • 提供Task-Oriented API
    • SQS是Message-Oriented API
  • 會確保assigned task不會重複執行
  • 分三個角色
    • Starters: 啟動job的
    • Deciders: 控制下一步要幹嘛,決定是成功還是失敗
    • Activity Workers: 執行Task

Elastic Transcoder

  • Media Transcoder,將影片轉檔

SMS (Short Message Service)

  • 送簡訊,跟Queue沒關係

SES (Simple Email Service)

  • 送Email

Amazon MQ

  • ActiveMQ代管

AWS MSK

  • Kafka代管

AWS Kinesis

  • AWS自有的分散式Queue