【发布时间】:2022-10-03 03:48:34
【问题描述】:
我很难证明consumer_timeout 设置按预期工作。
我可能做错了事或误解了 consumer_timeout 行为。
我所有的测试代码都可以在这里找到:https://github.com/Rafarel/rabbitmq-tests
基本上,我将consumer_timeout 设置为 10000 毫秒(10 秒),然后我尝试通过回调来使用该消息
在尝试确认消息之前,它的睡眠时间比超时值(20 秒)长一点。
由于超时,我应该有一个 PRECONDITION_FAILED 异常,但事实并非如此。
如果我在receive_timeout.py 中设置的SLEEP_DURATION 比consumer_timeout 值(如60 秒)多,我会有例外。
引用https://www.rabbitmq.com/consumers.html#acknowledgement-timeout
如果消费者在超过超时值(默认为 30 分钟)内未确认其交付,则其通道将因 PRECONDITION_FAILED 通道异常而关闭。
如果有人可以帮助我理解我做错了什么,那就太好了,谢谢!
-
看起来检查 consumer_timeout 的 RabbitMQ 进程每分钟只运行一次。如果您将 SLEEP_DURATION 增加到 65 秒,您的频道应该关闭。这种配置对我来说很有意义。它旨在防止“长时间运行”进程。
标签: python rabbitmq timeout pika