ITお絵かき修行

3歩歩いても忘れないために

RabbitMQ on EC2

EC2上でRabbitMQを動かしてみる。
RabbitMQ - Messaging that just works


【動機】
・JMSをGlassFish・JBossASなどのアプリケーションサーバー依存でない方法で試したかったため
・公式のドキュメントが豊富だったため(インストールからクラスタ構成作成まで)
ActiveMQだと必要な設定がわからずハマったため

【記事概要】
基本的に下記エントリの切り貼り+α。公式で配布しているJavaのクライアントアプリを動かすところまで行う。
はじめての RabbitMQ|サイバーエージェント 公式エンジニアブログ
RabbitMQ - Amazon EC2
非同期 - RabbitMQ の導入 - Qiita

【前提】
Ubuntu Server 14.04 LTS (HVM)
Erlang:R16B03
・RabbitMQ:3.3.5
・作業はrootユーザで行う。

【手順】
1.Erlangインストール

root@ip-xxx-xxx-xxx-xxx:~# cd /usr/local/src
root@ip-xxx-xxx-xxx-xxx:/usr/local/src# nohup wget http://www.erlang.org/download/otp_src_R16B03.tar.gz &
※時間がかかるので念のためnohupコマンドで実行する
※記事作成時の最新版は17.3だったが、不安だったので前バージョンの16.3でインストールした

root@ip-xxx-xxx-xxx-xxx:/usr/local/src# tar xvzf otp_src_R16B03.tar.gz
root@ip-xxx-xxx-xxx-xxx:/usr/local/src# apt-get update

root@ip-xxx-xxx-xxx-xxx:/usr/local/src# sudo apt-get install libncurses-dev
root@ip-xxx-xxx-xxx-xxx:/usr/local/src# apt-get -y install wget patch gcc make libncurses-dev
root@ip-xxx-xxx-xxx-xxx:/usr/local/src# cd otp_src_R16B03/
root@ip-xxx-xxx-xxx-xxx:/usr/local/src/otp_src_R16B03# ./configure
※ドキュメントが作成できない、というエラーが出力されるが無視

root@ip-xxx-xxx-xxx-xxx:/usr/local/src/otp_src_R16B03# nohup make &
root@ip-xxx-xxx-xxx-xxx:/usr/local/src/otp_src_R16B03# nohup make install &
※時間がかかるので念のためnohupコマンドで実行する

root@ip-xxx-xxx-xxx-xxx:/usr/local/src/otp_src_R16B03# /usr/local/bin/erl -version
Erlang (ASYNC_THREADS) (BEAM) emulator version 5.10.4
※上記コマンドを実行してエラーが出なければ正常にインストールが完了している。


(2)RabbitMQインストール

root@ip-xxx-xxx-xxx-xxx:~# cd /usr/local/etc
root@ip-xxx-xxx-xxx-xxx:/usr/local/etc# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.5/rabbitmq-server_3.3.5-1_all.deb
root@ip-xxx-xxx-xxx-xxx:/usr/local/etc# dpkg -i rabbitmq-server_3.3.5-1_all.deb
root@ip-xxx-xxx-xxx-xxx:/etc/init.d# sudo rabbitmqctl status
※上記コマンドを実行してエラーが出なければ正常にインストールが完了している。


(3)Java7のインストール
※以下のページを参照。
How To Install Oracle Java 7 In Debian Via Repository ~ Web Upd8: Ubuntu / Linux blog


(4)Javaのクライアントツールを導入する。実行するとキューイングする様子が見られる。

root@ip-xxx-xxx-xxx-xxx:/usr/local/etc/rabbitmq#wget "http://www.rabbitmq.com/releases/rabbitmq-java-client/v3.3.5/rabbitmq-java-client-bin-3.3.5.tar.gz"
root@ip-xxx-xxx-xxx-xxx:/usr/local/etc/rabbitmq# tar zxf rabbitmq-java-client-bin-3.3.5.tar.gz
root@ip-xxx-xxx-xxx-xxx:/usr/local/etc/rabbitmq# cd rabbitmq-java-client-bin-3.3.5/
root@ip-xxx-xxx-xxx-xxx:/usr/local/etc/rabbitmq/rabbitmq-java-client-bin-3.3.5# ./runjava.sh com.rabbitmq.examples.PerfTest
starting consumer #0
starting producer #0
time: 1.000s, sent: 1767 msg/s, received: 1496 msg/s, min/avg/max latency: 340/7                                 6986/127576 microseconds
time: 2.000s, sent: 2589 msg/s, received: 1909 msg/s, min/avg/max latency: 11076                                 9/223119/371205 microseconds
time: 3.000s, sent: 2911 msg/s, received: 2701 msg/s, min/avg/max latency: 27245                                 7/369913/435889 microseconds
(以下略)


次はテスト用のクライアントアプリを真似してJMS通信してみる。