42

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

4

8 に答える 8

49

サーバーを管理するための直接的な AMQP の方法はないようですが、Python から実行できる方法があります。サブプロセスモジュールをコマンドと組み合わせて使用​​し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ます。

于 2011-11-17T06:44:27.673 に答える
27

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

いずれにせよ、AMQP ではキューを宣言するのはクライアント (コンシューマー) です。パブリッシャーはルーティング キーを使用して交換にメッセージを発行し、コンシューマーはそれらのルーティング キーがどのキューに移動するかを決定します。したがって、コンシューマが存在しない場合にキューについて話すことは意味がありません。

于 2010-11-26T20:14:38.163 に答える
22

プラグイン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()]
于 2014-01-22T14:59:58.437 に答える
3

私はRabbitMQの初心者なので、これを少し理解してください。ただし、興味深い管理プラグインがあります。これにより、HTTPインターフェイスが「ここから、交換、キュー、バインディング、仮想ホスト、ユーザー、およびアクセス許可を管理できます。UIがうまくいけばかなり自明です。」

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

于 2010-12-06T15:32:34.437 に答える
3

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

于 2012-11-09T15:32:21.310 に答える
2

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

于 2010-11-26T23:23:32.230 に答える
0

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

http://localhost:15672/cli/

ローカル用)

于 2013-05-30T04:34:28.523 に答える