2013年5月7日火曜日

rabbitmqやってみた

■概要
rabbitmqサーバ1台とクライアント1台で簡単なキュー処理をやってみた
ユーザとかvhostとか権限とかもやってみた

■rabbitmqインストール
今回はchefでインストールします、なのであらかじめchefをインストールしておいてください
http://kakakikikeke.blogspot.jp/2013/03/chefomnibus.html
またrabbitmqのchefインストールは以下に必要なcookbooksも含めてまとめています(一番したの方)
http://kakakikikeke.blogspot.jp/2013/05/opscodecookbooks.html

■rabbitmqadminインストール
※rabbitmqctlではクライアントツールとして動作しないのでデフォルトで付属している専用のクライアントツールをインストールする
※15672のWeb-API用のポートを使って通信する
・サーバ側操作
rabbitmq-plugins enable rabbitmq_management
/etc/init.d/rabbitmq-server restart
netstat -an | grep 15672
15672で新しくプロセスが上がっていることを確認する
・クライアント側操作
cd /usr/local/sbin
wget http://サーバ側IPアドレス:15672/cli/rabbitmqadmin
chmod 755 rabbitmqadmin
以下からはクライアント側で操作する

■ユーザとvhostと権限の作成
rabbitmqadmin --host サーバのIPアドレス declare vhost name=testvhost
rabbitmqadmin --host サーバのIPアドレス declare user name=kakakikikeke password=********** tags=testtag
rabbitmqadmin --host サーバのIPアドレス declare permission vhost=testvhost user=kakakikikeke configure=".*" write=".*" read=".*"

rabbitmqではユーザを指定しないとguest:administratorでアクセスされます
vhostも「/」のみが有効になっています
「ユーザ」「vhost」「権限」のつながりをまとめると
ユーザとvhostを作成してvhostに対してどんな権限かと誰が触れるかを設定します

■クライアント・サーバで検証
キューを作成して確認したあとメッセージを送信し受信します

rabbitmqadmin --host サーバのIPアドレス --vhost testvhost --user kakakikikeke --password ********** declare queue name=testqueue001
rabbitmqadmin --host サーバのIPアドレス --vhost testvhost --user kakakikikeke --password ********** list queues
rabbitmqadmin --host サーバのIPアドレス --vhost testvhost --user kakakikikeke --password ********** publish routing_key=testqueue001 payload="test message 001" exchange=amq.default
rabbitmqadmin --host サーバのIPアドレス --vhost testvhost --user kakakikikeke --password ********** get queue=testqueue001 requeue=false

他のアクションコマンドの一覧を表示
rabbitmqadmin help subcommands

AMQP互換のrabbitmqには様々なクライアントが用意されており簡単に触れます
今回は付属のcliツールを使いましたが、他にもいろいろありかつクライアントによっては
実装されていない機能もあるので、結構良し悪しがありそうです

■Tips
キューを作成する際にdurable=falseで作成するとrabbitmqが再起動した後にキューが削除されている

0 件のコメント:

コメントを投稿