标准队列
AWS 默认的队列类型,一般业务上不要求消息的顺序性、接收端允许接收重复消息或者做了幂等处理的,用标准队列就够了。
- 消息投递:at-least-once
- 顺序性:尽量保证消息顺序
- 吞吐量:允许近乎无限
- 消息积压:不受限
- 飞行消息(传输中的消息):最多 120000 条
- 消息失败处理:持续处理消息,直到保留期结束(todo:重试间隔)
FIFO(先进先出)队列
业务上严格要求消息的顺序性,则需要选择 FIFO 队列。
- 消息投递:exactly-once
- 顺序性:发送和接收消息的顺序一致
- 吞吐量:允许近乎无限
- 消息积压:不受限
- 飞行消息(传输中的消息):最多20000 条
- 消息失败处理:消息组会被阻塞,直到消息成功处理,但是其它消息组中的消息不受影响
死信队列(DLQ)
死信队列中持有其它队列无法处理的消息(服务于其它消息队列),如果其它消息队列需要使用死信队列,则要先创建死信队列,再将其作为这个消息队列的死信队列。
死信队列可以配置仅允许某些源队列将其作为死信队列,如果有其他源队列将其设为死信队列,则从源队列移到死信队列的所有消息都将失败。
一般进入死信队列的消息,需要人为介入排查失败原因。