【发布时间】:2021-08-27 11:00:23
【问题描述】:
我正在通过 AWS Amazon-MQ 使用托管 RabbitMQ 集群。如果消费者快速完成他们的工作,那么一切正常。但是,根据少数情况,很少有消费者需要超过 30 分钟才能完成处理。 在这种情况下,RabbitMQ 会删除消费者并使相同的消息在队列中再次可见。因此,另一个消费者拿起它并开始处理。它正在循环中发生。因此,同样的交易再次被执行,我也失去了消费者。 我没有使用任何 AcknowledgeMode 所以我相信它默认是 AUTO 并且有 30 分钟的限制。 有什么方法可以增加 AUTO 模式的 Delivery Acknowledgement Timeout 吗? 或者请让我知道是否有人对此有任何其他解决方案。
【问题讨论】:
-
到目前为止,似乎没有办法更改托管 aws rabbitmq 实例的配置 (rabbitmq.conf)。我试过rabbitmqadmin。还有另一个名为 rabbitmqctl 的工具,但我查看了文档,似乎也没有修改配置的选项。您可以选择在 EC2 实例上设置 rabbitmq 吗?然后可以直接修改rabbitmq.conf... # 30分钟,单位毫秒 consumer_timeout = 1800000
-
您的另一个选择是立即确认消息,然后处理它们......但问题是如果消息处理不正确会发生什么?不会再被AMQ重发
-
谢谢!这非常有帮助,我会提出 AWS 支持票,看看他们是否有任何改变这一点的选项。
-
希望您能得到答案,如果有,请在此处更新我们 :)。祝你好运
标签: java amazon-web-services spring-boot rabbitmq amazon-mq