Spring 云 AWS SQS 删除策略
Spring Cloud AWS SQS Deletion Policy
我们有一个SQS监听器,比如:
@MessageMapping("queueName")
void listen(String message) { ... }
此队列配置了关联死信队列的重新驱动策略。
问题是默认的 Spring 云 AWS 实施在轮询消息时删除消息并在内部连接 3 次重试以处理它,然后失败。
我可以看到有一个带有 ALWAYS 和 ON_SUCCESS 值的 SqsMessageDeletionPolicy 枚举,等等。我在任何文档中都找不到如何更改该队列的 QueueAttributes 以更改此行为。
有谁知道吗?
似乎解决方案基本上是使用 SQS 特定注释而不是通用注释:
@SqsListener(value = "queueName", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
void listen(String message) { ... }
已接受的答案显示了如何为单个队列配置删除策略,
如果你想设置一个全局删除策略,所有@SqsListener
都可以使用属性来设置:
cloud.aws.sqs.handler.default-deletion-policy=ON_SUCCESS
我们有一个SQS监听器,比如:
@MessageMapping("queueName")
void listen(String message) { ... }
此队列配置了关联死信队列的重新驱动策略。
问题是默认的 Spring 云 AWS 实施在轮询消息时删除消息并在内部连接 3 次重试以处理它,然后失败。
我可以看到有一个带有 ALWAYS 和 ON_SUCCESS 值的 SqsMessageDeletionPolicy 枚举,等等。我在任何文档中都找不到如何更改该队列的 QueueAttributes 以更改此行为。
有谁知道吗?
似乎解决方案基本上是使用 SQS 特定注释而不是通用注释:
@SqsListener(value = "queueName", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
void listen(String message) { ... }
已接受的答案显示了如何为单个队列配置删除策略,
如果你想设置一个全局删除策略,所有@SqsListener
都可以使用属性来设置:
cloud.aws.sqs.handler.default-deletion-policy=ON_SUCCESS