#Rabbit MQの導入
RabbitMQを導入して非同期キューのテストでもしてみようと思い立ち、導入してみた。
##前提条件
前提条件にErlangが必要なので、そこから。
ErlangのRPM取得
wget "http://packages.erlang-solutions.com/site/esl/esl-erlang/FLAVOUR_1_general/esl-erlang_15.b.3-1~fedora~beefymiracle_amd64.rpm"
wget "https://github.com/jasonmcintosh/esl-erlang-compat/blob/master/rpmbuild/RPMS/noarch/esl-erlang-compat-R14B-1.el6.noarch.rpm?raw=true"
これをyum で導入し、Erlangは終了。
yum install esl-erlang_15.b.3-1~fedora~beefymiracle_amd64.rpm
yum install esl-erlang-compat-R14B-1.el6.noarch.rpm
RabbitMQ の導入
yum install http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.4/rabbitmq-server-3.3.4-1.noarch.rpm
RabbitMQ の設定
ひな型のコピー
よくあるパターンとして、ひな型があるのでまずコピーして設定していく。
cp -a /usr/share/doc/rabbitmq-server-3.3.4/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
運用時にはレベルを変えたいかもしれないので、以下の内容をチェック。
{log_levels, [{connection, info}]},
はログを表していて、infoがレベル(none/error/warning/info)を表している。
ログは、/var/log/rabbitmqにある。
動作確認
JavaのClientツールを導入し、テストツールで動作確認をおこなう。
wget "http://www.rabbitmq.com/releases/rabbitmq-java-client/v3.3.4/rabbitmq-java-client-bin-3.3.4.tar.gz"
tar zxf rabbitmq-java-client-bin-3.3.4.tar.gz
解凍したフォルダで、PerfTestを実行して確認。
./runjava.sh com.rabbitmq.examples.PerfTest
starting consumer #0
starting producer #0
time: 1.001s, sent: 4874 msg/s, received: 3028 msg/s, min/avg/max latency: 3132/81769/204803 microseconds
time: 2.001s, sent: 17897 msg/s, received: 6538 msg/s, min/avg/max latency: 216676/503751/640297 microseconds
time: 3.001s, sent: 10706 msg/s, received: 10953 msg/s, min/avg/max latency: 494052/926855/1224386 microseconds
な感じになっていればQueueは動作している。
--helpで呼び出すことで、以下のようなヘルプが得られる。
-?,--help show usage
-A,--multiAckEvery <arg> multi ack every
-a,--autoack auto ack
-b,--heartbeat <arg> heartbeat interval
-c,--confirm <arg> max unconfirmed publishes
-C,--pmessages <arg> producer message count
-D,--cmessages <arg> consumer message count
-e,--exchange <arg> exchange name
-f,--flag <arg> message flag
-h,--uri <arg> AMQP URI
-i,--interval <arg> sampling interval
-k,--routingKey <arg> routing key
-M,--framemax <arg> frame max
-m,--ptxsize <arg> producer tx size
-n,--ctxsize <arg> consumer tx size
-p,--predeclared allow use of predeclared objects
-Q,--globalQos <arg> channel prefetch count
-q,--qos <arg> consumer prefetch count
-r,--rate <arg> rate limit
-s,--size <arg> message size
-t,--type <arg> exchange type
-u,--queue <arg> queue name
-x,--producers <arg> producer count
-y,--consumers <arg> consumer count
-z,--time <arg> time limit
Webでの管理ツール
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_shovel
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_shovel_management
/etc/init.d/rabbitmq-server restart
管理ツールを有効にします。
rabbitmqctl -n rabbit@localhost add_user admin admin
rabbitmqctl -n rabbit@localhost set_permissions admin ".*" ".*" ".*"
rabbitmqctl -n rabbit@localhost set_user_tags admin administrator
上記コマンドでユーザを登録(admin/admin)にして、以下のURLでアクセス可能になります。