web-dev-qa-db-ja.com

Pythonを使用してRabbitMQ交換のキューをリストまたは検出するにはどうすればよいですか?

再起動したRabbitMQサーバー交換でキューを検出できるクライアントをpython必要があります。その後、クライアントを起動して各キューからのメッセージの消費を再開します。 python api/library?

35
rschramm

私の知る限り、これを行う方法はありません。 Pythonとは何の関係もありませんが、AMQPはキュー検出のメソッドを定義しないためです。

いずれにせよ、AMQPでは、キューを宣言するのはクライアント(コンシューマー)です。パブリッシャーはルーティングキーを使用してメッセージをエクスチェンジにパブリッシュし、コンシューマーはルーティングキーがどのキューに行くかを決定します。したがって、消費者がいない状態でキューについて話すことは意味がありません。

24
Daniel Roseman

サーバーを管理するための直接のAMQP方法はないようですが、Pythonから実行する方法があります。 subprocessモジュールをrabbitmqctlコマンドと組み合わせて使用​​して、キューのステータスを確認することをお勧めします。

Linuxでこれを実行していると仮定しています。コマンドラインから、次を実行します:

rabbitmqctl list_queues

結果として:

Listing queues ...
pings   0
receptions      0
shoveled        0
test1   55199
...done.

(まあ、それは私の特定のキューのために私の場合でした)

コードで、このコードを使用してrabbitmqctlの出力を取得します。

import subprocess

proc = subprocess.Popen("/usr/sbin/rabbitmqctl list_queues", Shell=True, stdout=subprocess.PIPE)
stdout_value = proc.communicate()[0]
print stdout_value

それから、あなた自身の使用のためにstdout_valueを解析するためのあなた自身のコードを考え出してください。

43
IvanD

プラグインrabbitmq_managementを追加できます

Sudo /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
Sudo service rabbitmq-server restart

次に、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

この例では requests ライブラリを使用していますが、それほど重要ではありません。

また、私たちのためにそれを行うライブラリを見つけました- pyrabbit

from pyrabbit.api import Client
cl = Client('localhost:15672', 'guest', 'guest')
queues = [q['name'] for q in cl.get_queues()]
18
Sergey Telminov

私はRabbitMQ初心者なので、これを一粒の塩で取りますが、興味深いManagement Pluginがあります。 「ここから、交換、キュー、バインディング、仮想ホスト、ユーザー、アクセス許可を管理できます。UIが一目瞭然であることを願っています。」

http://www.rabbitmq.com/blog/2010/09/07/management-plugin-preview-release/

3
olleolleolle

https://github.com/bkjones/pyrabbit を使用します。これは、RabbitMQのmgmtプラグインのAPIインターフェイスと直接対話するため、RabbitMQの問い合わせに非常に便利です。

2
David Lemphers

管理機能は、AMQPの将来のバージョンで予定されています。そのため、今のところ、その機能を搭載した新しいバージョンがリリースされるまで待つ必要があります。

2
mariana soffer

ピラビットは私にはあまりうまくいきませんでした。ただし、管理プラグイン自体には独自のコマンドラインスクリプトがあり、独自の管理GUIからダウンロードして後で使用できます(たとえば、

http://localhost:15672/cli/

ローカル使用向け)

0
diogobaeder