rabbitmq pika在使用线程时不会执行多个任务

wb1gzix0  于 7个月前  发布在  RabbitMQ
关注(0)|答案(1)|浏览(91)

当我阻塞channel.start_consuming()长时间运行的IOLoop时,我遇到了ConnectionResetError的问题。我读了这段代码:
https://github.com/pika/pika/blob/0.12.0/examples/basic_consumer_threaded.py
在此代码中,作业在后台线程中运行。
问题是,当我的作业在线程中运行时,工人仍然可以采取更多的作业,(即,不断获得on_message回调)。但我不希望我的员工一次处理多个作业。
我该怎么办?是否可以通知队列工作者“忙碌”,并且在一段时间内不能接受作业?

tkclm6bt

tkclm6bt1#

只要您通过channel.basic_qos方法设置通道的QoS值,您的消费者就不会收到比prefetch_count指定的更多的未确认消息。
如果您使用prefetch_count=1参数,您的消费者一次只能获得一条消息,并且在为该消息调用basic_ack之前不会获得更多消息。
如果出于某种原因,你看到了一些不同的东西,请在pika-python邮件列表的邮件中以附件或链接的形式分享你的所有代码,我会检查的。

相关问题