読者です 読者をやめる 読者になる 読者になる

サーバの状態の確認

RabbitMQ

Rabbit MQサーバ管理者ガイド・サーバの状態の項を読みながら確認する。

キューの状態を確認

list_queuesでキューの状態を確認。bindされたキューがない状態でコマンドを実行すると、

$ sudo /usr/sbin/rabbitmqctl list_queues
Listing queues ...
...done.

ひとつだけ消費者プロセスを立ち上げた後、

$ sudo /usr/sbin/rabbitmqctl list_queues
Listing queues ...
amq.gen-/8acTXLFJUCupyu1BDmqbQ==        0
...done.

同じ、Exchange Nameでもう一つ消費者プロセスを起動。

$ sudo /usr/sbin/rabbitmqctl list_queues
Listing queues ...
amq.gen-1CdTJbQGZKiwFrKwkE3ZIA==        0
amq.gen-VWcx8dSsq8bcq47z3MHuig==        0
...done.

ここまでやって気づいたが、二つプロセスを立ち上げなくても、Exchangeを2つ以上宣言して、一つのChannelを使いまわせばいいのか。

ch.exchange_declare('ex1', 'fanout', auto_delete=True)

qname1, _, _ = ch.queue_declare()
ch.queue_bind(qname1, 'ex1')
ch.basic_consume(qname1, callback=callback)

ch.exchange_declare('ex2', 'fanout', auto_delete=True)

qname2, _, _ = ch.queue_declare()
ch.queue_bind(qname2, 'ex2')
ch.basic_consume(qname2, callback=callback2)

while ch.callbacks:
    ch.wait()
$ sudo /usr/sbin/rabbitmqctl list_queues name messages consumers
Listing queues ...
amq.gen-PlAM5g32mLf5pulTnN4MUw==        0       1
amq.gen-6A1WFoeuR+wRC7H0kXnK/g==        0       1
...done.

Exchangeを列挙する

"list_exchanges"でExchangeを列挙する。RabbitMQはAMPQ 0-8を実装しているので、Exchangeタイプはdirect, fanout, topicのどれか。(AMPQ 0-10にはこの3つの他にheaderタイプがある。)

$ sudo /usr/sbin/rabbitmqctl list_exchanges name type
Listing exchanges ...
amq.rabbitmq.log        topic
amq.topic       topic
amq.direct      direct
amq.fanout      fanout
        direct
...done.