Amazon SQS のアイコン

Amazon SQS 热门2006年〜

全托管的消息队列服务,实现应用组件间的解耦

它能做什么

Amazon SQS(Simple Queue Service)是一项全托管的消息队列服务。在分布式系统的组件间传递消息,实现松耦合。提供标准队列(高吞吐量、至少一次投递)和 FIFO 队列(严格顺序、精确一次处理)。消息在队列中保留最长 14 天,消费者按自己的节奏处理。

使用场景

用于微服务间的异步通信、工作负载的削峰填谷、批处理作业的任务分发、订单处理系统的可靠消息传递。

日常类比

可以比作邮局的信箱。发件人(生产者)将信件(消息)投入信箱(队列),收件人(消费者)在方便的时候取出处理。即使收件人暂时不在,信件也不会丢失。

什么是 SQS

Amazon SQS 是 AWS 最早推出的服务之一,是消息队列的事实标准。通过在组件间插入队列,即使下游组件暂时不可用或处理缓慢,上游组件也能继续工作。消息在队列中安全保存直到被成功处理。

标准队列与 FIFO 队列

标准队列提供近乎无限的吞吐量,消息至少投递一次(可能重复),顺序为尽力而为。FIFO 队列保证消息的严格顺序和精确一次处理,但吞吐量有限(每秒 3000 条消息,批处理时更高)。死信队列(DLQ)用于存放多次处理失败的消息,便于后续调查。 如需深入了解队列设计模式,可参考相关书籍(Amazon)

开始使用

在 SQS 控制台创建队列(选择标准或 FIFO)。通过 API 发送消息到队列,消费者使用 ReceiveMessage API 接收并处理消息,处理完成后删除消息。Lambda 可以作为 SQS 的事件源自动处理队列消息。

注意事项

  • 标准队列消息可能重复投递,应用需要实现幂等处理
  • 可见性超时期间消息对其他消费者不可见,需要在超时前完成处理
共有するXB!