rabbitmqでチュートリアルをうごかす
とにもかくにもサーバいれる
https://www.rabbitmq.com/install-mac.html
(ソースからやる場合はこちら。https://www.rabbitmq.com/build-server.html)
インストール手順はこのまま。erlangはもともといれてたので。あとはrabbitmq-serverをおとします。
curl -O http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.7/rabbitmq-server-2.8.7.tar.gz tar xvzf amqp_client-2.8.7-src.tar.gz sudo TARGET_DIR=/opt/local/rabbitmq SBIN_DIR=/opt/local/rabbitmq/sbin/ MAN_DIR=/opt/local/rabbitmq/man make install
pythonやれxsltprocやれ必要なので事前になにも入ってない人は先にそっちをいれるべし。で、もう動かせそうだけど、rabbitmq-serverの設定まわりをちょっと変えます
https://www.rabbitmq.com/configure.html
にまるっとかいてあるけど、要は設定ファイルは2つ。env用とconfig用。envを以下の記述だけにして/etc/rabbitmq/rabbitmq-env.confとして保存。
NODENAME=waki-rabbit #CONFIG_FILE=/etc/rabbitmq/wkzk MNESIA_BASE=/Users/wkzk/rabbit-mnesia
nodenameがデフォだどhostnameからひっぱってくるようなので明示的に指定したのと、rabbitmq-serverを起動する際にmnesiaのDBが必要なので、それの置き場所を指定しました。
で、あとは起動するだけ。
sbin/rabbitmq-server -detached
ってすると
wakimac:rabbitmq wakizaka$ sbin/rabbitmq-server -detached Activating RabbitMQ plugins ... 0 plugins activated:
って感じで地味にバックグラウンドで起動します。止めるときには
sbin/rabbitmqctl stop
だって。
実行したときのログはデフォで/var/log/rabbitmq下に出力されて、さっき明示的に指定したNODENAMEがログファイル名でつかわれます。saslのログもあわせて二つ作られます。
クライアントいれる
メッセージング送受信でクライアントが必要なので入れます。せっかくのAMQPなのでerlang clientで送信して、javaで受信する言語をまたいで動作確認することにします。
https://www.rabbitmq.com/erlang-client.html
で、てっとりばやくうごかしたかったのでコンパイル済のezファイル2つがあったので、それだけおとします。
wget http://www.rabbitmq.com/releases/rabbitmq-erlang-client/v2.7.0/rabbit_common-2.7.0.ez unzip rabbit_common-2.7.0.ez ln -s rabbit_common-2.7.0 rabbit_common wget http://www.rabbitmq.com/releases/rabbitmq-erlang-client/v2.7.0/amqp_client-2.7.0.ez unzip amqp_client-2.7.0.ez ln -s amqp_client-2.7.0 amqp_client
erlang clientのチュートリアルはgithubから拝借します。
https://github.com/rabbitmq/rabbitmq-tutorials/tree/master/erlang
send.erlがあるので、ぱくってこれをこのまま動かします。escriptなのでshellと同じのりでそのまま実行ですね。
wakimac:~ wkzk$ ./send.erl [x] Sent 'Hello World!'
で送信されたっぽいです。次にjava側で受信します。java clientはmaven経由でおとします。eclipseを起動してpom.xmlに以下を宣言追加しただけ。(m2eプラグインを先にいれてある状態)
<dependencies> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>2.8.7</version> </dependency> </dependencies>
さっきのgithubのtutorialにjavaもあるので
https://github.com/rabbitmq/rabbitmq-tutorials/blob/master/java/Recv.java
これをこのまま使います。で、実行!
うけとれました!!
言語またいで送受信できて新鮮!結構、思ったより動いたので調子にのってつんであった本みながらもうちょっとちゃんと動作させてみようかなぁ。
RabbitMQ in Action: Distributed Messaging for Everyone
- 作者: Alvaro Videla,Jason J. W. Williams
- 出版社/メーカー: Manning Pubns Co
- 発売日: 2012/04/28
- メディア: ペーパーバック
- クリック: 7回
- この商品を含むブログを見る
以上、チュートリアルのコード動作検証より、はてなブログを書く方に時間かかったので涙目、の巻でした(え