**背景:**RabbitMQ 3.8.x的最新更改创建了30分钟的交付确认超时。根据文档,这可以在rabbitmq.conf文件中通过设置consumer_timeout值来覆盖。
**我的问题:**我正在使用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,所以任何帮助将不胜感激。
有没有办法通过库设置consumer_timeout值,或者为pika用户提供类似的解决方案?我希望Channel.basic_consume()函数可能有一个参数,但我也明白这可能是一个集群设置,而不是可以通过消费者设置的东西。
第一次提问,所以我非常感谢任何帮助和反馈,我是否提供了足够的信息。
1条答案
按热度按时间lbsnaicq1#
您现在可以通过Amazon MQ中的配置设置
consumer_timeout
值。https://aws.amazon.com/about-aws/whats-new/2023/07/amazon-mq-managed-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