Я пытаюсь создать потребителя, который будет подписываться на несколько очередей, а затем обрабатывать сообщения по мере их поступления.
Проблема в том, что когда в первой очереди уже присутствуют некоторые данные, они потребляют первую очередь и никогда не перейдут на использование второй очереди. Однако, когда первая очередь пуста, она переходит в следующую очередь, а затем использует обе очереди одновременно.
Сначала я реализовал многопоточность, но хочу избежать этого, когда библиотека pika сделает это за меня без особых сложностей. Ниже мой код:
import pika
mq_connection = pika.BlockingConnection(pika.ConnectionParameters('x.x.x.x'))
mq_channel = mq_connection.channel()
mq_channel.basic_qos(prefetch_count=1)
def callback(ch, method, properties, body):
print body
mq_channel.basic_ack(delivery_tag=method.delivery_tag)
mq_channel.basic_consume(callback, queue='queue1', consumer_tag="ctag1.0")
mq_channel.basic_consume(callback, queue='queue2', consumer_tag="ctag2.0")
mq_channel.start_consuming()
php-amqplib
, и он работает, как ожидалось. Я предварительно публикую сообщения в обе очереди, а затем все они используются. - person old_sound   schedule 03.07.2014