0%

AWS SQS

Message Queue

message queue

要素

  • 生产者(producer/publisher)
  • 消费者(consumer/subscriber)
  • 队列

作用

  • 解耦生产者和消费者
  • 缓存瞬时大量数据,提升处理吞吐量

SQS

一种高可用,弹性、分布式的Message Queue

模型

sqs modal

生命周期

sqs lifecycle

  1. 生产者1入队消息A,此时启动 Retention Period Timout(默认4天,最大14天)计时;
  2. 消费者1poll消息A,此时启动Visibility Timeout(默认30秒,最大12小时)计时,Visibility Timeout前,A不被其他消费者可见, 同时其Receive count计数加1;
  3. 消费者1处理完消息A,主动删除消息A;
  4. 如果该SQS配置了死信队列,当Receive count计数达到maxReceiveCount,A会被系统移动到死信队列
  5. 消息A在队列中的时间达到Retention Period Timeout后,系统将会将A删除;

SQS的分类

分类

standard vs fifo

  • Message Order
    Standard queues 提供最大限度保证顺序能力(best-effort ordering),但顺序也可能不一致
    FIFO queues 提供绝对保证顺序能力(first-in-first-out delivery)
  • Delivery
    Standard queues 保证消息至少可以被获取一次,但也可能被获取多次
    FIFO queues 保证消息有且只能被获取一次
  • Throughput
    Standard queues 提供无TPS(transactions per second)限制的收发能力
    FIFO queues 提供最大300TPS的收发能力,如果使用batch,最大可以到3000TPS
  • Availability
    Standard queues 在所有region可用
    FIFO queues 仅部分region可用,比如 the US West (Oregon), US East (Ohio), US East (N. Virginia), and EU (Ireland)