首页 > 解决方案 > 使用 SimpleMessageListenerContainer 的 SQS 消息丢失?

问题描述

SqsMessages 可以使用@SqsListener或 spring 集成的SqsMessageDrivenChannelAdapter. 两者都将实际轮询和处理委托给SimpleMessageListenerContainer其具有可能影响消息消耗率的性能限制,如下所述:https ://github.com/awspring/spring-cloud-aws/issues/23

这会以这种方式导致消息丢失吗?考虑这种情况:

  1. queue在移动到 之前配置了 3 次重试dead-letter,可见性超时为 30 秒

  2. 消息第一次发送,但在 30 秒内没有被消费(和删除)

  3. 第二次发送消息,在 30 秒内再次未使用(和删除)

  4. 同样第三次,现在消息被移动到 dead-letter

这可能吗?是否还会出现消息丢失的情况,即消息经过保留期并且由于处理速度慢而从未传递给消费者SimpleMessageListenerContainer

是否还有其他可能丢失消息的情况?我错过了什么吗?我们如何保证没有消息丢失?

标签: spring-messagingspring-cloud-aws

解决方案


推荐阅读