RabbitMQ は Erlang で実装された AMQP のブローカー。 具体的な利用例だと OpenStack プロジェクトで RPC のインフラとして使われている。 最近知ったんだけど RabbitMQ にはプラグイン機構があって、その中の Management Plugin を使うと WebUI を利用できるようだ。
使い方
検証の環境には Mac OS X を使っている。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.11.2 BuildVersion: 15C50
まずは RabbitMQ 本体を Homebrew でインストールする。
$ brew install rabbitmq
インストールできたら、次に Management Plugin を有効にする。
$ rabbitmq-plugins enable rabbitmq_management
RabbitMQ を起動する。
$ rabbitmq-server
起動できたら TCP:15672 を Listen しているか確認する。 このポートが HTTP サーバを提供している。
$ lsof -i | grep :15672 beam.smp 34160 amedama 25u IPv4 0xc500faa99d5ac3d5 0t0 TCP *:15672 (LISTEN)
ポートが空いていることが確認できたらブラウザで開く。
$ open http://localhost:15672/
すると、次のような WebUI が表示されるはず。
デフォルトの状態であれば次のアカウントでログインできる。
- Username: guest
- Password: guest
ログインすると WebUI 経由で RabbitMQ の状態が確認できたり、各リソースを操作できるようになる。
RabbitMQ Management HTTP API
ちなみに Management Plugin を有効にすると WebUI だけでなく HTTP API も使えるようになる。 むしろ、この HTTP API をラッパしているのが WebUI ということだろう。
例えば curl コマンドを使って、自身のアカウント情報を確認してみよう。
$ curl -sS -u guest:guest http://localhost:15672/api/whoami | python -m json.tool { "name": "guest", "tags": "administrator" }
アカウント名の guest と、管理者権限を表すであろうタグの administrator という情報が得られた。
HTTP API ではキューやエクスチェンジなどを操作することもできるようになっている。 詳しくは Management Plugin を有効にした RabbitMQ を立ち上げた状態で次の URL にアクセスすると API の仕様を確認できる。
めでたしめでたし。