0
我有N個工人消耗我的RabbitMQ任務。但我希望他們能夠同時使用多個任務。RabbitMQ - 同時處理多個任務
我讀了關於prefetch_count
參數可以讓我這樣做,但它不起作用。
這是我在Python代碼,使用鼠兔庫:
import pika
import time
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='task_queue', durable=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
def callback(ch, method, properties, body):
print(" [x] Received %r" % (body,))
time.sleep(body.count(b'.'))
print(" [x] Done")
ch.basic_ack(delivery_tag=method.delivery_tag)
channel.basic_qos(prefetch_count=2) # Here I should be able to handle 2 tasks in the same time
channel.basic_consume(callback,
queue='task_queue')
channel.start_consuming()
不幸的是,如果當前處理(所以,basic_ack沒有派尚)任務,回調不叫第二任務。它等待當前完成的任務開始下一個任務。