RabbitMQは管理コンソール以外にもWebAPIが提供されている
RabbitMQは、ブラウザで操作できる管理コンソールが提供されています。
この管理コンソールでも最低限の操作(Queue、Exchange、vhostの参照・追加・変更・削除)と、プロファイル変更もできるのですが、これらの機能はWebサービスも提供されています。
機能一覧は管理コンソールの最下部にある「HTTP API」にあり、いつでも参照できます。
例えば /api/overview をGETで問い合わせれば、RabbitMQの全システム簡易情報が出ますし、/api/extensions ならRabbitMQに追加したプラグインが一覧で表示されます。
見ておきたいAPIと内容
ここでもよく使っているAPIの一覧と概要を紹介します。
定義一覧
/api/definitions(/vhost)
現在定義されているユーザアカウント名とアクセス範囲, Exchange, Queueの定義情報の全一覧が表示されます。
vhostを指定する(※)と、そのvhost内に閉じた Exchange, Queueの定義情報を表示します。
設定変更した後や接続試験時などにも参考にできるでしょう。
接続一覧
/api/connections
/api/vhosts/vhost名/connections
/api/connectionsは現在RabbitMQへ接続している接続の詳細情報を返します。
vhostを指定した場合は、vhost内での接続の詳細情報を返します。
接続情報にはホスト名やGC(ガベージコレクト)数や、送受信したメッセージの数を示す値、具体的には
channels: 18,
state": "running",
send_pend: 0,
send_cnt: 1408,
recv_cnt: 2745,
のように、接続チャネル数、稼働ステータス、送信を見送っている数、送信回数、受信回数も検出できます。
接続チャネル一覧
/api/channels
/api/vhosts/vhost名/channels
各ホストからRabbitMQへの接続の数を接続チャネルとして接続チャネル情報の一覧を返します。vhostとチャネル名を指定した場合は、そのチャネルのみの情報を返します。チャネル名は 接続ホストIPアドレス -> RabbitMQのIPアドレス(番号)
など複雑な名前になる場合があります。
Consumer数
/api/consumers
/api/consumers/vhost名
現在有効なConsumer(メッセージを受け取った後に実行するプロセス)の数です。vhostで抽出も可能です。
Exchange数
/api/exchanges
/api/exchanges/vhost名
/api/exchanges/vhost名/exchange名
メッセージを送受信する際の窓口となるExchangeの一覧を返します。
exchange名まで指定すると、現在のメッセージ送受信の状況も表示されます。
{
incoming: [ ],
outgoing: [ ],
message_stats: {
publish: 0,
publish_details: {
rate: 0
},
publish_in: 119,
publish_in_details: {
rate: 0
},
publish_out: 119,
publish_out_details: {
rate: 0
},
ack: 0,
ack_details: {
rate: 0
},
deliver_get: 0,
deliver_get_details: {
rate: 0
},
confirm: 0,
confirm_details: {
rate: 0
},
return_unroutable: 0,
return_unroutable_details: {
rate: 0
},
redeliver: 0,
redeliver_details: {
rate: 0
}
},
name: "sample.exchange",
vhost: "/sample",
type: "direct",
durable: true,
auto_delete: false,
internal: false,
arguments: { }
}
メッセージの送信
/api/exchanges/vhost名/exchange名/publish (POST)
指定したExchange経由でメッセージを送信します。
Queue一覧
/api/queues
/api/queues/vhost名
/api/queues/vhost名/queue名
現在有効なQueue情報を返します。処理が終わっていないメッセージの数や、処理中、エラーが発生して蓄積している数も情報として返されます。
死活監視
/api/aliveness-test/vhost名
指定したvhostのノードが生きているかをチェックできます。モニタリング用です。
vhost指定する(※)ときの注意
RabbitMQは vhostの単位で、アクセスするユーザが利用できる権限を管理しています。このvhostを指定するときの注意点として、/(スラッシュ)から始まるvhost名を指定したときには、%2f に置換しなければなりません。(デフォルトの / の場合は記載しなくても良い )
例えば vhost名が /sample の場合は、%2fsample です
よく使うもの
以下は監視用に使っています。
用途 | URL例 | 備考 |
---|---|---|
死活監視 | /api/aliveness-test/%2fsample-vhost | RabbitMQが息をしているかの確認 |
送信失敗キュー(※※)の有無確認 | /api/queues/%2fsample-vhost/error.queue | RabbitMQ経由で送信したメッセージから、処理失敗したものをエラーキューとして退避した数 |
※※送信失敗キューは、RabbitMQ : Dead Letter Exchangesで扱う設定の前提
Spring-AMQPを使うとConsumerでメッセージを受けたあとに例外が発生するとリトライやエラー退避が簡単にできる。