tutorial nodejs exchange español python rabbitmq amqp

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()]




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.