web-dev-qa-db-fra.com

Obtenir le nombre de messages dans une file d'attente rabbbitmq

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?

19
Basic

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'
32
ChillarAnand

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

6
OhadBasan