[*]#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host=”localhost”))
channel = connection.channel()
channel.queue_declare(queue=”Q.hello”)
def callback(ch, method, properties, body):
print(” [x] Received %r” % body)
# ch.basic_ack(delivery_tag=method.delivery_tag)
channel.basic_consume(callback, queue=”Q.hello”)
print(‘ [*] Waiting for messages. To exit press CTRL+C’)
channel.start_consuming()
Solución:
La exploración de colas no es compatible directamente, pero si declara una cola SIN reconocimientos automáticos y no ACK los mensajes que recibe, entonces puede ver todo lo que contiene. Después de haberlo revisado, envíe un CANCELAR en el canal o desconéctese y vuelva a conectarse para que todos los mensajes se pongan en cola. Esto incrementa un número en los encabezados de los mensajes, pero deja los mensajes intactos.
Creé una aplicación en la que el orden de los mensajes no era muy importante y, con frecuencia, escaneaba la cola de esta manera. Si encontraba un problema, volcaba los mensajes en un archivo, los arreglaba y los volvía a enviar.
Si solo necesita echar un vistazo a un mensaje o dos de vez en cuando, puede hacerlo con el complemento de administración RabbitMQ.
Además, si solo necesita un recuento de mensajes, puede obtenerlo cada vez que declare la cola, o en un comando basic.get.
@MichaelDillon basado en su respuesta para hacer la vida más fácil a los demás, estoy poniendo aquí un ejemplo de no_ack:
[*]#!/usr/bin/env python import pika connection = pika.BlockingConnection(pika.ConnectionParameters(host="localhost")) channel = connection.channel() channel.queue_declare(queue="Q.hello") def callback(ch, method, properties, body): print(" [x] Received %r" % body) # ch.basic_ack(delivery_tag=method.delivery_tag) channel.basic_consume(callback, queue="Q.hello") print(' [*] Waiting for messages. To exit press CTRL+C') channel.start_consuming()