AWS SQS FIFO队列SendMessageBatch部分失败问题咨询
FIFO SQS批量发送问题解答
问题1:C是否会被入队?
会。SendMessageBatch接口采用部分成功机制,批量中的每条消息处理是独立的。只要单条消息返回成功(对应批量响应里的成功条目),就会被写入FIFO队列,不受其他消息失败的影响。所以A和C会正常入队,B失败不会牵连C。
问题2:重发后队列读取顺序是A、C、B吗?
不是,最终读取顺序会是A、B、C。原因如下:
- FIFO队列的顺序保证基于消息组ID(MessageGroupId),同一个消息组内的消息会严格按照发送顺序(由消息的
SequenceNumber确定先后)被消费。 - 第一次批量发送时,A和C成功入队,但因为B属于同一个消息组,FIFO会保留B的位置。当你在可见性超时内重发B(使用相同的
MessageDeduplicationId可避免重复),或重新执行批量发送且全部成功后,队列会自动将B插入到A之后、C之前的正确位置,消费时会按A→B→C的顺序读取,不会出现A、C、B的顺序。
内容的提问来源于stack exchange,提问作者socrates
相关产品推荐
相关产品推荐

