Message Queue
要素
- 生产者(producer/publisher)
- 消费者(consumer/subscriber)
- 队列
作用
- 解耦生产者和消费者
- 缓存瞬时大量数据,提升处理吞吐量
SQS
一种高可用,弹性、分布式的Message Queue
模型
生命周期
- 生产者1入队消息A,此时启动 Retention Period Timout(默认4天,最大14天)计时;
- 消费者1poll消息A,此时启动Visibility Timeout(默认30秒,最大12小时)计时,Visibility Timeout前,A不被其他消费者可见, 同时其Receive count计数加1;
- 消费者1处理完消息A,主动删除消息A;
- 如果该SQS配置了死信队列,当Receive count计数达到maxReceiveCount,A会被系统移动到死信队列
- 消息A在队列中的时间达到Retention Period Timeout后,系统将会将A删除;
SQS的分类
分类
- 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)