Amazon SQS可见性超时未按预期工作问题排查
可能的原因及排查方向
控制台接收消息时未正确指定可见性超时
AWS SQS控制台的“接收消息”操作默认可能不会直接沿用队列的默认可见性超时配置,需要你在接收消息的参数设置里手动指定3600秒(1小时)的可见性超时。如果仅修改了队列的默认配置,但每次接收消息时未覆盖参数,控制台可能使用自身默认值(通常为30秒),导致消息很快重回队列。控制台页面的隐性消息释放行为
当你在控制台页面查看消息后,若刷新页面、关闭标签页或页面会话超时,控制台可能自动调用ChangeMessageVisibility接口将消息的可见性超时重置为0,直接把消息放回队列,这会让其他消费者立刻接收到消息。混淆轮询时长与可见性超时的作用
轮询时长(WaitTimeSeconds)是SQS长轮询的等待时间,和消息的可见性超时完全无关。如果第一个页面仅触发了一次长轮询但未获取到消息,轮询超时后其他消费者拿到消息是正常的,这和可见性超时没有关系。只有当第一个页面成功获取到消息后,可见性超时才会生效,阻止其他消费者在超时前拿到该消息。消息接收操作未成功完成
如果第一个页面的ReceiveMessage调用因网络波动或其他问题未成功获取消息的锁(即SQS未标记该消息为“已接收”),那么消息不会被设置可见性超时,其他消费者自然可以立刻接收。
内容的提问来源于stack exchange,提问作者Vishnu Vivek
相关产品推荐
相关产品推荐

