Spring Cloud AWS SQS删除策略

时间:2017-08-16 09:40:49

标签: aws-sdk spring-cloud amazon-sqs

我们有一个SQS监听器,例如:

@MessageMapping("queueName")
void listen(String message) { ... }

此队列的重新启动策略配置了相关的死信队列。

问题在于,默认的Spring Cloud AWS实现在轮询时会删除该消息,并在内部连接3次重试以进行处理,然后失败。

我可以看到有一个带有ALWAYS和ON_SUCCESS值的SqsMessageDeletionPolicy枚举。我无法在任何文档中找到如何更改该队列的QueueAttributes以更改此行为。

有谁知道?

2 个答案:

答案 0 :(得分:5)

似乎解决方案基本上是使用SQS特定注释而不是通用注释:

@SqsListener(value = "queueName", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
void listen(String message) { ... }

答案 1 :(得分:0)

接受的答案显示了如何为单个队列配置删除策略,

如果您想设置所有 @SqsListener 都将使用的全局删除策略,可以使用属性进行设置: cloud.aws.sqs.handler.default-deletion-policy=ON_SUCCESS