python - uso - rabbitmq tutorial español
Usando RabbitMQ, ¿hay alguna manera de ver el contenido de la cola sin una secuencia de comandos? (3)
@MichaelDillon basado en su respuesta para hacer que los demás sean más fáciles. Pongo 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()
Como una forma de aprender RabbitMQ y python, estoy trabajando en un proyecto que me permite distribuir las codificaciones h264 entre varias computadoras. Lo básico está hecho, tengo un daemon que se ejecuta en Linux o Mac que se conecta a la cola, acepta trabajos y los codifica utilizando HandBrakeCLI y detecta el mensaje una vez que se ha completado la codificación. También he creado una herramienta simple para insertar elementos en la cola.
Ahora quiero expandir las capacidades de la herramienta que empuja los elementos a la cola para que pueda ver lo que está en la cola. Soy consciente de la capacidad de ver cuántos elementos hay en la cola, pero quiero poder obtener los mensajes reales para poder mostrar qué película o programa de televisión está esperando a ser codificado todavía. La idea es que el gestor de colas reciba los mensajes de los clientes del codificador cuando se haya completado un trabajo y luego actualice la lista de cola.
Sé que hay una forma enrevesada de mantener la lista del administrador de colas sincronizada con la cola de trabajo real, pero me gustaría que esto sea "persistente" en el sentido de que debería poder cerrar el administrador de colas y volver a abrirlo más tarde para ver la cola .
La exploración de colas no se admite directamente, pero si declara una cola SIN acuses de recibo automático y NO ACEPTA los mensajes que recibe, puede ver todo lo que contiene. Después de haber echado un vistazo, envíe una CANCELACIÓN en el canal, o desconéctese y vuelva a conectar para hacer que todos los mensajes sean puestos en cola. Esto incrementa un número en los encabezados del mensaje, pero de lo contrario deja los mensajes intactos.
Creé una aplicación donde el orden de los mensajes no era muy importante y con frecuencia escaneaba la cola de esta manera. Si encuentro un problema, descargo los mensajes en un archivo, los arreglo y vuelvo a enviarlos.
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 contar un mensaje, puede obtenerlo cada vez que declara la cola, o en un comando basic.get.
Lo que desea hacer se llama examinar la cola, aunque a partir de this RabbitMQ aún no lo admite.