You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制AWS SQS FIFO逐个顺序处理消息,前条Lambda执行完成后再处理下一条

SQS FIFO队列触发Lambda实现严格逐个顺序处理的配置方案
  • 第一步:设置Lambda预留并发数为1
    限制Lambda同一时间仅能运行一个执行实例,从根本上避免多条消息被并行处理。
  • 第二步:配置SQS触发器批处理参数
    将Lambda关联的SQS触发器的批处理大小设置为1,确保每次触发Lambda时仅拉取1条消息。
  • 第三步:统一消息的消息分组ID
    所有需要严格保序的消息,发送到SQS FIFO时必须使用完全相同的MessageGroupId。SQS FIFO的顺序保证是消息分组维度的,只有同分组下的消息才会遵循先进先出规则,前一条处理完成后才会投递下一条。
  • 第四步:匹配可见性超时与Lambda执行时长
    将SQS FIFO队列的消息可见性超时设置为大于Lambda函数的最大执行时长,避免消息未处理完成就因超时重新可见,导致顺序混乱或重复消费。
  • 第五步:添加消息删除逻辑
    在Lambda的处理代码中,消息处理完成后必须主动调用SQS的DeleteMessage接口删除已处理的消息,SQS确认消息删除后才会投递同分组的下一条消息。
  • 可选配置
    • 开启SQS触发器的「报告批处理项故障」功能:单条消息处理失败时仅将该消息放回队列头部,下次触发优先重试失败消息,不会直接跳过处理后续消息。
    • 配置死信队列:设置最大接收次数,超过重试次数的消息会被投递到死信队列,避免单条消息持续处理失败阻塞整个队列的后续消息处理。

注意:若未配置死信队列,单条消息持续处理失败会不断重试,导致整个队列被阻塞,请根据业务场景合理配置重试策略。

内容的提问来源于stack exchange,提问作者rholdberh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:51:02