Spring Cloud AWS SQS 删除策略

问题描述 投票:0回答:3

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

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

此队列配置有关联的死信队列的重新驱动策略。

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

我可以看到有一个 SqsMessageDeletionPolicy 枚举,其中包含 ALWAYS 和 ON_SUCCESS 值等。我在任何文档中都找不到如何更改该队列的 QueueAttributes 以更改此行为。

有人知道吗?

aws-sdk spring-cloud amazon-sqs
3个回答
10
投票

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

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

5
投票

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

如果你想设置一个被所有@SqsListener使用的

全局删除策略
,可以通过使用属性来设置:
cloud.aws.sqs.handler.default-deletion-policy=ON_SUCCESS


0
投票

请使用现有配置消除这些问题

@SqsListener(value = "queueName",deletionPolicy = SqsMessageDeletionPolicy.ALWAYS) 无效听(字符串消息){...}

© www.soinside.com 2019 - 2024. All rights reserved.