概要
RabbitMQプラグインを開発するための環境構築をしてみました
実際にRabbtMQプラグインを開発するためにはerlangのコードが書けないとダメです
自分は書けないので環境を構築するまでの手順を紹介します
環境
- CentOS 6.6 64bit (Final)
- RabbitMQ 3.4.4
RabbitMQ自体のインストールは今回は紹介しません
インストール方法に関してはこちらで紹介しているので参照してみてください
環境構築
基本はコマンドベース構築していきます
必要なパッケージのインストール
作成するプラグインをビルドするために必要なパッケージをインストールしておきます
yum -y install libxslt gcc
Umbrellaのインストール
UmbrellaとはRabbitMQのプラグインを管理している仕組みです
サンプル開発用のプラグインも含めRabbitMQの安定版として動作しているプラグインのソースもインストールすることができます
git clone https://github.com/rabbitmq/rabbitmq-public-umbrella.git
cd rabbitmq-public-umbrella/
make co
make coするとRabbitMQのプラグインを次々とダウンロードしてきてくれます
結構な数があるのですべてのプラグインのダウンロードが完了するまで待ちます
ダウンロードが完了しmakeが問題なく終了すればUmbrellaのインストールは完了です
長いですが、完了後は以下のような感じでプラグインのフォルダが存在していればOKです
-rw-r--r-- 1 root root 955 2月 24 19:58 2015 README-packaging
-rw-r--r-- 1 root root 5505 2月 24 19:58 2015 Makefile
-rw-r--r-- 1 root root 24897 2月 24 19:58 2015 LICENSE
-rw-r--r-- 1 root root 2666 2月 24 19:58 2015 generate_deps
-rw-r--r-- 1 root root 622 2月 24 19:58 2015 generate_app
-rwxr-xr-x 1 root root 142 2月 24 19:58 2015 foreachrepo
-rw-r--r-- 1 root root 22541 2月 24 19:58 2015 do-package.mk
-rw-r--r-- 1 root root 4461 2月 24 19:58 2015 common.mk
-rwxr-xr-x 1 root root 3206 2月 24 19:58 2015 check_xref
-rw-r--r-- 1 root root 448 2月 24 19:58 2015 all-packages.mk
-rw-r--r-- 1 root root 337 2月 24 19:58 2015 README.md
-rw-r--r-- 1 root root 19770 2月 24 19:58 2015 README.makefiles
drwxr-xr-x 5 root root 4096 2月 24 19:58 2015 rabbitmq-docs
drwxr-xr-x 3 root root 4096 2月 24 19:58 2015 util
-rw-r--r-- 1 root root 1368 2月 24 19:58 2015 umbrella.mk
-rw-r--r-- 1 root root 11268 2月 24 19:58 2015 release.mk
drwxr-xr-x 2 root root 4096 2月 24 19:58 2015 release-build
drwxr-xr-x 9 root root 4096 2月 24 19:59 2015 rabbitmq-java-client
drwxr-xr-x 7 root root 4096 2月 24 20:00 2015 rabbitmq-dotnet-client
drwxr-xr-x 6 root root 4096 2月 24 20:00 2015 rabbitmq-test
drwxr-xr-x 3 root root 4096 2月 24 20:00 2015 cowboy-wrapper
drwxr-xr-x 3 root root 4096 2月 24 20:00 2015 eldap-wrapper
drwxr-xr-x 3 root root 4096 2月 24 20:00 2015 mochiweb-wrapper
drwxr-xr-x 7 root root 4096 2月 24 20:00 2015 rabbitmq-amqp1.0
drwxr-xr-x 7 root root 4096 2月 24 20:00 2015 rabbitmq-auth-backend-ldap
drwxr-xr-x 4 root root 4096 2月 24 20:00 2015 rabbitmq-auth-mechanism-ssl
drwxr-xr-x 5 root root 4096 2月 24 20:00 2015 rabbitmq-consistent-hash-exchange
drwxr-xr-x 7 root root 4096 2月 24 20:00 2015 rabbitmq-federation
drwxr-xr-x 5 root root 4096 2月 24 20:00 2015 rabbitmq-federation-management
drwxr-xr-x 9 root root 4096 2月 24 20:00 2015 rabbitmq-management
drwxr-xr-x 4 root root 4096 2月 24 20:00 2015 rabbitmq-management-agent
drwxr-xr-x 5 root root 4096 2月 24 20:00 2015 rabbitmq-management-visualiser
drwxr-xr-x 5 root root 4096 2月 24 20:01 2015 rabbitmq-web-dispatch
drwxr-xr-x 6 root root 4096 2月 24 20:01 2015 rabbitmq-mqtt
drwxr-xr-x 6 root root 4096 2月 24 20:01 2015 rabbitmq-shovel
drwxr-xr-x 7 root root 4096 2月 24 20:01 2015 rabbitmq-shovel-management
drwxr-xr-x 8 root root 4096 2月 24 20:01 2015 rabbitmq-stomp
drwxr-xr-x 4 root root 4096 2月 24 20:01 2015 rabbitmq-toke
drwxr-xr-x 6 root root 4096 2月 24 20:01 2015 rabbitmq-tracing
drwxr-xr-x 5 root root 4096 2月 24 20:01 2015 rabbitmq-web-stomp
drwxr-xr-x 5 root root 4096 2月 24 20:01 2015 rabbitmq-web-stomp-examples
drwxr-xr-x 3 root root 4096 2月 24 20:01 2015 sockjs-erlang-wrapper
drwxr-xr-x 6 root root 4096 2月 24 20:01 2015 toke
drwxr-xr-x 3 root root 4096 2月 24 20:01 2015 webmachine-wrapper
drwxr-xr-x 4 root root 4096 2月 24 20:09 2015 coverage
drwxr-xr-x 3 root root 4096 2月 24 20:09 2015 rabbitmq-codegen
drwxr-xr-x 11 root root 4096 2月 24 20:15 2015 rabbitmq-server
drwxr-xr-x 9 root root 4096 2月 24 20:15 2015 rabbitmq-erlang-client
drwxr-xr-x 8 root root 4096 2月 24 20:15 2015 rabbitmq-metronome
サンプルプラグインをビルドしてみる
ダウンロードしたプラグインの中にrabbitmq-metronome
というフォルダがあり、これがサンプル用のプラグインになります
これをビルドして実際にRabbitMQ本体に追加するところまでやってみたいと思います
まずはビルドしてみます
cd rabbitmq-metronome
make
するとダーっとログが流れてビルドがはじまります
結構時間がかかるので失敗しないように祈りながら待ちます
ビルドが完了したら成果物である.ezファイルをRabbitMQ本体にインストールしてプラグインを有効にします
cp dist/rabbitmq_metronome-0.0.0.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.4.4/plugins/
rabbitmq-plugins list
rabbitmq-plugins enable rabbitmq_metronome
.ezファイルを本体にplugins
フォルダに移動するだけでOKです
そのあとはrabbitmq-plugins
コマンドを使ってプラグインを有効にするだけです
listしてみると分かりますが、移動したezファイルのプラグインが一覧に出てくることがわかると思います
動作を確認してみる
サンプルのrabbitmq-metronome
プラグインはConnectionとChannelをExchangeを1つずつ生成してMessageRate 1.0 req/sec でメッセージを送信してくれるプラグインのようです
管理UIにアクセスしてConnectionsタブを見てみましょう
こんな感じで常に接続されているConnectionsが確認できればプラグインがうまく動作していることになります
最後に
このままrabbitmq-metronome
プラグインを修正したい場合はrabbitmq-metronome/src
配下の.erlファイルや.srcファイルを修正しmakeしてezファイルを作成してから、pluginsファルダに移動してという流れを繰り返せばOKです
参考サイトに記載した公式をみるとrabbit_metronome_worker.erl
がコアの部分を実装しているのでここを修正しましょう的なことが書いてありました
が、ボクは試していないので最中ではないです
erlangが書けて読める人だったらこっからちょろっとプラグインを作ってしまうのだろうか
時間があったらやってみよう