背景: RabbitMQ 3.8.x 的最新更改创建了 30 分钟的传送确认超时。根据文档,可以通过设置consumer_timeout值在rabbitmq.conf文件中覆盖它。
我的问题:我正在使用 pika 客户端库,需要 30 多分钟来处理工作队列中的每条消息。我通过 AWS Amazon-MQ 使用托管 RabbitMQ 集群,直到几天前才出现任何问题,但现在我的日志中收到
PRECONDITION_FAILED - delivery acknowledgment on channel 1 timed out. Timeout value used: 1800000 ms
消息。我的集群设置为自动次要版本更新,因此这是我对这些更改如何发生的假设。
我知道托管服务的重点是向用户隐藏所有这些设置详细信息,但是当然,现在我需要更改其中之一。我发现我可以通过rabbitmqadmin CLI与远程集群通信以执行列出队列等任务,但我仍在寻找一种远程编辑底层配置文件的方法。我拥有的集群的唯一信息是主机(格式为 b-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.mq.us-east-1.amazonaws.com)、用户名和密码。有谁知道这是否可能?我对各种 CLI 工具(例如rabbitmqctl和rabbitmq-diagnostics)很陌生,因此我们将不胜感激。
有没有办法通过库或类似的解决方法为 pika 用户设置consumer_timeout 值?我希望 Channel.basic_consume() 函数可能有一个参数,但我也明白这可能是一个集群设置,而不是可以通过消费者设置的东西。
第一次在这里提问,所以我非常感谢任何关于我是否提供了足够信息的帮助和反馈。
您现在可以通过 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
从 RabbitMQ 版本 3.12 开始,您还可以使用策略设置传送确认超时。 https://www.rabbitmq.com/consumers.html#acknowledgement-timeout