nodejs - ¿Cómo puedo listar o descubrir colas en un intercambio de RabbitMQ usando python?
rabbitmq tutorial (7)
Necesito tener un cliente de Python que pueda descubrir colas en un intercambio de servidor RabbitMQ reiniciado, y luego iniciar un cliente para reanudar el consumo de mensajes de cada cola. ¿Cómo puedo descubrir las colas de algunas api / library python compatibles con RabbitMQ?
Las características de administración se deben a una versión futura de AMQP. Por ahora, tendrá que esperar hasta una nueva versión que vendrá con esa funcionalidad.
Pyrabbit no funcionó tan bien para mí; Sin embargo, el complemento de administración tiene su propio script de línea de comandos que puede descargar desde su propia GUI de administrador y usar más adelante (por ejemplo, descargué el mío de
http://localhost:15672/cli/
para uso local)
Que yo sepa, no hay forma de hacer esto. Eso no tiene nada que ver con Python, sino porque AMQP no define ningún método de descubrimiento de colas.
En cualquier caso, en AMQP son sus clientes (consumidores) quienes declaran colas: los editores publican mensajes en un intercambio con una clave de enrutamiento, y los consumidores determinan a qué colas se dirigen esas claves de enrutamiento. Por lo tanto, no tiene sentido hablar de colas en ausencia de los consumidores.
Usted puede agregar plugin rabbitmq_management
sudo /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
sudo service rabbitmq-server restart
Luego usa rest-api
import requests
def rest_queue_list(user=''guest'', password=''guest'', host=''localhost'', port=15672, virtual_host=None):
url = ''http://%s:%s/api/queues/%s'' % (host, port, virtual_host or '''')
response = requests.get(url, auth=(user, password))
queues = [q[''name''] for q in response.json()]
return queues
Estoy usando la biblioteca de requests en este ejemplo, pero no es significativamente.
También encontré biblioteca que lo hacen por nosotros - pyrabbit
from pyrabbit.api import Client
cl = Client(''localhost:15672'', ''guest'', ''guest'')
queues = [q[''name''] for q in cl.get_queues()]
Ya que soy un principiante de RabbitMQ, tome esto con un poco de sal, pero hay un interesante complemento de administración , que expone una interfaz HTTP a "Desde aquí puede administrar intercambios, colas, enlaces, hosts virtuales, usuarios y permisos. Esperemos que la interfaz de usuario es bastante autoexplicativo ".
http://www.rabbitmq.com/blog/2010/09/07/management-plugin-preview-release/
Yo uso https://github.com/bkjones/pyrabbit . Habla directamente con la interfaz API del complemento mgmt de RabbitMQ, y es muy útil para interrogar a RabbitMQ.
Parece que no hay una forma directa de AMQP para administrar el servidor, pero hay una forma de hacerlo desde Python. Recomendaría usar un módulo de subproceso combinado con el comando rabbitmqctl
para verificar el estado de las colas.
Supongo que está ejecutando esto en Linux. Desde una línea de comando, ejecutando:
rabbitmqctl list_queues
resultará en:
Listing queues ...
pings 0
receptions 0
shoveled 0
test1 55199
...done.
(bueno, lo hizo en mi caso debido a mis colas específicas)
En su código, use este código para obtener la salida de rabbitmqctl
:
import subprocess
proc = subprocess.Popen("/usr/sbin/rabbitmqctl list_queues", shell=True, stdout=subprocess.PIPE)
stdout_value = proc.communicate()[0]
print stdout_value
Luego, simplemente crea tu propio código para analizar stdout_value
para tu propio uso.