Nous utilisons amqplib pour publier/consommer des messages. Je veux pouvoir lire le nombre de messages sur une file d'attente (idéalement à la fois reconnu et non acquitté). Cela me permettra de montrer un bon diagramme de statut aux utilisateurs d'administration et de détecter si un certain composant ne permet pas de suivre la charge.
Je ne trouve aucune information dans les documents d'amqplib sur le statut de la file d'attente de lecture.
Quelqu'un peut me diriger dans la bonne direction?
tilisation de PIKA :
import pika
pika_conn_params = pika.ConnectionParameters(
Host='localhost', port=5672,
credentials=pika.credentials.PlainCredentials('guest', 'guest'),
)
connection = pika.BlockingConnection(pika_conn_params)
channel = connection.channel()
queue = channel.queue_declare(
queue="your_queue", durable=True,
exclusive=False, auto_delete=False
)
print(queue.method.message_count)
tilisation de Pyrabbit :
from pyrabbit.api import Client
cl = Client('localhost:55672', 'guest', 'guest')
cl.get_messages('example_vhost', 'example_queue')[0]['message_count']
tilisation http
Syntaxe:
curl -i -u user:password http://localhost:15672/api/queues/vhost/queue
Exemple:
curl -i -u guest:guest http://localhost:15672/api/queues/%2f/celery
Remarque: Vhost par défaut est /
qui doit être échappé comme %2f
tilisation de CLI :
$ Sudo rabbitmqctl list_queues | grep 'my_queue'
après la réponse de Chillaranand, vous pouvez obtenir la valeur facilement. Les données sont dans l'objet.
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
Host='localhost',
port=5672,
credentials=pika.credentials.PlainCredentials('guest', 'guest'),
)
channel = connection.channel()
print(channel.queue_declare(queue="your_queue", durable=True, exclusive=False,
auto_delete=False).method.message_count)
et vous obtiendrez le numéro de message exact