RabbitMQ 传送确认超时

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

我正在通过 AWS Amazon-MQ 使用托管 RabbitMQ 集群。如果消费者快速完成工作,那么一切都会正常进行。然而,根据少数情况,很少有消费者花费超过 30 分钟来完成处理。 在这种情况下,RabbitMQ 会删除使用者并使相同的消息在队列中再次可见。因此,另一个消费者拿起它并开始处理。它正在循环中发生。因此,同一笔交易再次被执行,我也失去了消费者。 我没有使用任何AcknowledgeMode,所以我相信默认情况下它是自动的,并且有 30 分钟的限制。 有没有办法增加自动模式的传送确认超时? 或者如果有人有任何其他解决方案,请告诉我。

java amazon-web-services spring-boot rabbitmq amazon-mq
3个回答
2
投票

AWS 支持回复:

消费者超时现在可以配置,但只能由服务团队完成。无论任何版本,更改都将是永久性的。

因此您可以将 RabbitMQ 更新到最新版本,无需坚持使用 3.8.11。提供您的经纪人详细信息和所需的超时,他们应该能够为您做到这一点。


0
投票

这是 AWS 支持人员的回复。

根据我的理解,我发现您的工作负载当前受到 v3.8.15 中引入的 Consumer_timeout 参数的影响。 因此,我们进行了多次联系,不幸的是,服务团队已经确认,虽然他们可以手动编辑rabbitmq.conf,但这将在下次重新启动或故障转移时被覆盖,因此不是推荐的解决方案。这也意味着应用手动更改的代理上的所有安全补丁都必须暂停。目前,该服务不支持从此配置文件中为 RabbitMQ 进行自定义用户配置,但已确认他们正在寻求将来解决此问题,但是无法确定何时可用。

从 RabbitMQ github 来看,这似乎是在 v3.8.15 中为仲裁队列添加的(https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.15),但似乎适用于所有消费者(https://github.com/rabbitmq/rabbitmq-server/pull/2990)。

不幸的是,RabbitMQ 本身不支持降级(https://www.rabbitmq.com/upgrade.html) 因此,服务团队建议的解决方法和最安全的操作,目前是在旧版本(3.8.11)上创建一个新代理,并将自动次要版本升级设置为 false,这样就不会升级。 然后从现有 RabbitMQ 实例导出配置并将其导入新实例并继续使用该实例。


0
投票

Amazon MQ 现在支持通过配置来配置

consumer_timeout
值。 https://aws.amazon.com/about-aws/whats-new/2023/07/amazon-mq-management-configuration-rabbitmq-brokers/

以下是有关如何将配置应用到 Amazon MQ 代理的指南:https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/rmq-configuration.html

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