RabbitMQ 传递确认超时
RabbitMQ Delivery Acknowledgement Timeout
我正在通过 AWS Amazon-MQ 使用托管的 RabbitMQ 集群。如果消费者快速完成他们的工作,那么一切都很好。但是,在某些情况下,很少有消费者花费超过 30 分钟来完成处理。
在那种情况下,RabbitMQ 删除消费者并使相同的消息在队列中再次可见。因此,另一个消费者拿起它并开始处理。它在循环中快乐。因此,同一笔交易再次执行,我也失去了消费者。
我没有使用任何 AcknowledgeMode,所以我相信默认情况下它是 AUTO,并且有 30 分钟的限制。
有什么方法可以增加 AUTO 模式的传递确认超时?
或者如果有人对此有任何其他解决方案,请告诉我。
这是 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 ), but seems to apply to all consumers (https://github.com/rabbitmq/rabbitmq-server/pull/2990) 中为仲裁队列添加的。
很遗憾,RabbitMQ 本身不支持降级(https://www.rabbitmq.com/upgrade.html)
因此,服务团队推荐的解决方法和最安全的操作,截至目前是在旧版本 (3.8.11) 上创建一个新代理并将自动次要版本升级设置为 false,这样它就不会升级。
然后从现有的 RabbitMQ 实例导出配置并将其导入新实例并继续使用该实例。
来自 AWS Support 的回复:
消费者超时现在是可配置的,但只能由服务团队完成。无论任何版本,更改都是永久性的。
所以你可以把 RabbitMQ 更新到最新的,而不需要坚持使用 3.8.11。提供您的经纪人详细信息和所需的超时时间,他们应该能够为您完成。
我正在通过 AWS Amazon-MQ 使用托管的 RabbitMQ 集群。如果消费者快速完成他们的工作,那么一切都很好。但是,在某些情况下,很少有消费者花费超过 30 分钟来完成处理。 在那种情况下,RabbitMQ 删除消费者并使相同的消息在队列中再次可见。因此,另一个消费者拿起它并开始处理。它在循环中快乐。因此,同一笔交易再次执行,我也失去了消费者。 我没有使用任何 AcknowledgeMode,所以我相信默认情况下它是 AUTO,并且有 30 分钟的限制。 有什么方法可以增加 AUTO 模式的传递确认超时? 或者如果有人对此有任何其他解决方案,请告诉我。
这是 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 ), but seems to apply to all consumers (https://github.com/rabbitmq/rabbitmq-server/pull/2990) 中为仲裁队列添加的。
很遗憾,RabbitMQ 本身不支持降级(https://www.rabbitmq.com/upgrade.html) 因此,服务团队推荐的解决方法和最安全的操作,截至目前是在旧版本 (3.8.11) 上创建一个新代理并将自动次要版本升级设置为 false,这样它就不会升级。 然后从现有的 RabbitMQ 实例导出配置并将其导入新实例并继续使用该实例。
来自 AWS Support 的回复:
消费者超时现在是可配置的,但只能由服务团队完成。无论任何版本,更改都是永久性的。
所以你可以把 RabbitMQ 更新到最新的,而不需要坚持使用 3.8.11。提供您的经纪人详细信息和所需的超时时间,他们应该能够为您完成。