RabbitMQ は、メッセージング アプリケーションの構築に使用できるオープン ソースのメッセージ キュー サーバーです。簡単に言うと、あるアプリケーションからキューにメッセージを書き込み、同じアプリケーションまたは別のアプリケーションからキューからメッセージを取得できます。さまざまなプログラミング言語を使用して、RabbitMQ に接続し、メッセージを作成および取得できます。
アーランをインストール
RabbitMQ が機能するには、Erlang がシステムにインストールされている必要があります。
Erlang の現在の安定版は R16B で、Erlang の Web サイトからダウンロードできます。
cd /usr/save wget http://www.erlang.org/download/otp_src_R16B.tar.gz tar xvfz /usr/save/otp_src_R16B.tar.gz
Erlang をダウンロードしたら、以下に示すようにソースから Erlang R16B バージョンをインストールします。
cd otp_src_R16B LANG=C; export LANG ./configure make make install
Erlang を検証
ここで、コマンド ラインから erl と入力すると、以下に示すように Erlang シェルが表示されます。これは、Erlang が正常にインストールされたことを示しています。
# erl
Erlang R16B (erts-5.10.1) [source] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V5.10.1 (abort with ^G)
1>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
a RabbitMQ をダウンロード
RabbitMQ サーバーの現在の安定バージョンは 3.0.4 です。 RabbitMQ Web サイトにアクセスすると、Linux プラットフォーム用に次のバージョンをダウンロードできることがわかります。1) Debian / Ubuntu 2) Fedora / RHEL 3) Generic Unix 4) Solaris
この例では、汎用 Unix 用の RabbitMQ を選択しました。
cd /usr/save wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.0.4/rabbitmq-server-generic-unix-3.0.4.tar.gz tar xvfz rabbitmq-server-generic-unix-3.0.4.tar.gz cd rabbitmq_server-3.0.4
RabbitMQ サーバーを起動
以下に示すように -detached オプションを渡して、RabbitMQ サーバーを起動します。
# cd /usr/save/rabbitmq_server-3.0.4 # sbin/rabbitmq-server -detached Warning: PID file not written; -detached was passed.
RabbitMQ サーバーの起動中に could_not_start_tcp_listener エラー メッセージが表示される場合は、この問題を解決する方法について、以下のトラブルシューティング セクションを参照してください。
RabbitMQ ステータスの確認
rabbitmqctl コマンドを使用して、RabbitMQ サーバーのステータスを確認し、必要に応じて停止します。
# sbin/rabbitmqctl status
Status of node 'rabbit@db-dev' ...
[{pid,30069},
{running_applications,[{rabbit,"RabbitMQ","3.0.4"},
{mnesia,"MNESIA CXC 138 12","4.8"},
{os_mon,"CPO CXC 138 46","2.2.11"},
{sasl,"SASL CXC 138 11","2.3.1"},
{stdlib,"ERTS CXC 138 10","1.19.1"},
{kernel,"ERTS CXC 138 10","2.16.1"}]},
{os,{unix,linux}},
{erlang_version,"Erlang R16B (erts-5.10.1) [source] [smp:4:4] [async-threads:30] [hipe] [kernel-poll:true]\n"},
{memory,[{total,15087368},
{connection_procs,1432},
{queue_procs,2864},
{plugins,0},
{other_proc,4748681},
{mnesia,30672},
{mgmt_db,0},
{msg_index,8652},
{other_ets,369668},
{binary,5976},
{code,6973062},
{atom,387397},
{other_system,2558964}]},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,1699810508},
{disk_free_limit,1000000000},
{disk_free,913096704},
{file_descriptors,[{total_limit,924},
{total_used,3},
{sockets_limit,829},
{sockets_used,1}]},
{processes,[{limit,1048576},{used,124}]},
{run_queue,0},
{uptime,6}]
...done. RabbitMQ サーバーを停止するには、以下に示すように rabbitmqctl コマンドを使用します。
# sbin/rabbitmqctl stop
トラブルシューティング
問題: CentOS 6 で、yum を使用して rabbitmq をインストールした場合、または上記で説明したようにソースからインストールした場合、「BOOT FAILED {could_not_start_tcp_listener」が表示される場合 ,{“::”,5672}}” メッセージの場合、ポートの競合の問題が発生している可能性があります。
解決策: CentOS 6 にデフォルトでインストールされる Matahari パッケージもポート 5672 で実行されます。このプロセスはデフォルトで開始されます。 qpidd (Qpid AMQP デーモン) を停止してみて、問題が解決するかどうかを確認してください。 Matahari が必要ない場合は、matahari、matahari-broker、qpid-cpp-server-ssl、および qpid-cpp-server パッケージをアンインストールすることもできます。
qpidd デーモンを停止し、chkconfig コマンドを使用してシステム起動から無効にします。
# chkconfig --list | grep -i qpid qpidd 0:off 1:off 2:on 3:on 4:on 5:on 6:off # service qpidd stop Stopping Qpid AMQP daemon: [ OK ] # chkconfig qpidd off # chkconfig --list | grep -i qpid qpidd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
ここで、RabbitMQ サーバーを起動すると、動作するはずです。