我需要循环回调队列中的所有消息,然后关闭回调。我需要它在队列为空时停止消费。 所以我将消息从一个队列写到另一个队列。
creds = pika.PlainCredentials(app.config['mq.user'], app.config['mq.pass'])
connection = pika.BlockingConnection(pika.ConnectionParameters(
host=app.config['mq.host'],
credentials=creds))
connection2 = pika.BlockingConnection(pika.ConnectionParameters(
host=app.config['mq.host'],
credentials=creds))
channel = connection.channel()
channel2 = connection2.channel()
Def requeue_callback(ch, method, properties, body):
try:
msg = json.loads(body)
ch2.basic_publish(exchange='',
routing_key=base_queue+'.request',
body = msg['orig_msg'])
finally:
ch.basic_ack(delivery_tag = method.delivery_tag)
channel.basic_consume(requeue_callback,
queue=base_queue+'.error')
channel.start_consuming()
*或者,我可以找到队列中的消息数,然后使用该特定数字。在这种情况下,我将如何重新排队特定号码。
答案 0 :(得分:0)
在回调函数中,您可以使用passive=True
声明队列,然后使用结果来获取消息计数。
例如:
>>> ch = rabbit.connection.channel()
>>> method = ch.queue_declare('sandbox', passive=True)
>>> method.method.message_count
23
>>>
然后检查这个数字是否为0。