27

メッセージのパブリッシュ/コンシュームにamqplibを使用しています。キューにあるメッセージの数を読み取れるようにしたい (理想的には、確認済みと未確認の両方)。これにより、管理者ユーザーに適切なステータス ダイアグラムを表示し、特定のコンポーネントが負荷に追いついていないかどうかを検出できます。

amqplib のドキュメントに、読み取りキューのステータスに関する情報が見つかりません。

誰かが私を正しい方向に向けることができますか?

4

3 に答える 3

54

ピカの使用:

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)

PyRabbit の使用:

from pyrabbit.api import Client
cl = Client('localhost:55672', 'guest', 'guest')
cl.get_messages('example_vhost', 'example_queue')[0]['message_count']

HTTP の使用

構文:

curl -i -u user:password http://localhost:15672/api/queues/vhost/queue

例:

curl -i -u guest:guest http://localhost:15672/api/queues/%2f/celery           

注: デフォルトの vhost は、次/のようにエスケープする必要があります。%2f

CLI の使用:

$ sudo rabbitmqctl list_queues | grep 'my_queue'
于 2014-11-22T06:05:38.037 に答える
7

ChillarAnand の回答に従って、簡単に値を取得できます。データはオブジェクトにあります。

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)

正確なメッセージ番号が表示されます

于 2015-10-06T14:37:19.197 に答える