再起動したRabbitMQサーバー交換でキューを検出できるクライアントをpython必要があります。その後、クライアントを起動して各キューからのメッセージの消費を再開します。 python api/library?
私の知る限り、これを行う方法はありません。 Pythonとは何の関係もありませんが、AMQPはキュー検出のメソッドを定義しないためです。
いずれにせよ、AMQPでは、キューを宣言するのはクライアント(コンシューマー)です。パブリッシャーはルーティングキーを使用してメッセージをエクスチェンジにパブリッシュし、コンシューマーはルーティングキーがどのキューに行くかを決定します。したがって、消費者がいない状態でキューについて話すことは意味がありません。
サーバーを管理するための直接の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
を解析するためのあなた自身のコードを考え出してください。
プラグイン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()]
私はRabbitMQ初心者なので、これを一粒の塩で取りますが、興味深いManagement Pluginがあります。 「ここから、交換、キュー、バインディング、仮想ホスト、ユーザー、アクセス許可を管理できます。UIが一目瞭然であることを願っています。」
http://www.rabbitmq.com/blog/2010/09/07/management-plugin-preview-release/
https://github.com/bkjones/pyrabbit を使用します。これは、RabbitMQのmgmtプラグインのAPIインターフェイスと直接対話するため、RabbitMQの問い合わせに非常に便利です。
管理機能は、AMQPの将来のバージョンで予定されています。そのため、今のところ、その機能を搭載した新しいバージョンがリリースされるまで待つ必要があります。
ピラビットは私にはあまりうまくいきませんでした。ただし、管理プラグイン自体には独自のコマンドラインスクリプトがあり、独自の管理GUIからダウンロードして後で使用できます(たとえば、
http://localhost:15672/cli/
ローカル使用向け)