首页 > 解决方案 > 无论成功/失败,在一定数量的接收后从 SQS 中删除消息

问题描述

我在 Spring Boot 应用程序的两个地方使用 SQS 队列:

  1. 在一个队列中,当给定消息的最大接收数 > = 3 时,我希望将消息路由到 DLQ
  2. 对于第二种情况,我不喜欢配置 DLQ。

但是,在(1)和(2)中,我想在收到 3 次后分别从 DLQ 和普通队列中删除消息。

截至目前,我在 SQS 中找不到任何这样的配置,它允许我在收到一定数量的消息后从队列中删除消息。

也许,我错过了一些东西。有人可以帮忙吗?

标签: amazon-web-servicesamazon-sqs

解决方案


如果您不想使用 DLQ,则没有在收到给定数量的不成功后“自动”从 SQS 队列中删除消息的机制

如果没有 DQL,SQS 会将消息保留在队列中直到它们过期。因此,如果你想做你想做的事,你必须为此创建自己的解决方案。您必须存储接收消息的次数,例如,在 DynamoDB 中,然后在第三次接收时,消费者必须从队列中显式删除消息。


推荐阅读