本文共 788 字,大约阅读时间需要 2 分钟。
我有一个python工作者客户端,它可以让10个工人分别挂接到一个RabbitMQ队列中。有点像这样:
#!/usr/bin/python
worker_count=10
def mqworker(queue, configurer):
connection = pika.BlockingConnection(pika.ConnectionParameters(host='mqhost'))
channel = connection.channel()
channel.queue_declare(queue=qname, durable=True)
channel.basic_consume(callback,queue=qname,no_ack=False)
channel.basic_qos(prefetch_count=1)
channel.start_consuming()
def callback(ch, method, properties, body):
doSomeWork();
ch.basic_ack(delivery_tag = method.delivery_tag)
if __name__ == '__main__':
for i in range(worker_count):
worker = multiprocessing.Process(target=mqworker)
worker.start()我遇到的问题是,尽管在频道上设置了basic_qos,但第一个开始的工作人员接受了队列中的所有消息,而其他人则坐在那里闲置。我可以在rabbitmq界面看到这一点,即使我将worker_count设置为1并在队列中存储了50条消息,所有50个都进入'未确认'桶,而我预计1会变成未确认,另外49个准备好了。
为什么这不起作用?
转载地址:http://ywqto.baihongyu.com/