鱒身(Masu_mi)のブログ

知った事をメモする場所。

チーム勉強会: RabbitMQ

ずいぶん昔に RabbitMQ について聞きかじった。 スライドにまとめようとか思っていたけれど、 そんな事を考えていると完成しないので、 当時の Markdown なメモを reST に書き直して晒す。

RabbitMQ 概要

プログラムの重要な要素には <操作/データ> がある。 はっきり切り分けられない事も多いが有用な分類だ。

ミドルウェアもシステムの要素と捉えると上記の2つのどちらかを提供している。 プログラム要素よりも更に曖昧だが、こう捉える事はやはりスタートが早い。

名前の通り RabbitMQ はMQシステムだ。 Queueを提供する「データ構造ミドルウェア」で非同期・永続化通信を実現する。

MQ含めた メッセージ指向ミドルウェア(MOM) は、 疎結合を維持しながら複数システム間の連携を実現するらしい。 まぁ非同期・永続化は、時間的制約を無くしつつ通信を保証されている通信なため、 連携させても切り離し易さを維持し易いのだろう。

サポートプロトコル

MQプロトコルにも幾つか種類がある。 RabbitMQがサポートしているのは以下 - AMQP サポート状況 - STOMP (Pluginによるサポート)

Pluginでサポートされているのはもっとある(MQTT とか)。

モデル(仕様)

構成要素は以下で捉えられる。 (チュートリアルを読むと徐々に登場するので理解し易い)

exchagne メッセージの入り口でありQueueへの振り分けなどを行う
Queue メッセージを溜め込むFILO
Producer メッセージを送信するクライアント
Consumer メッセージを受信するクライアント

実装

リポジトリ

言語 Erlang
フレームワーク Open Telecom Platform

勉強用資料

osxなら homebrew で入るので実験は気楽に出来る。 しかも rabbitmq_management (Web管理画面plugin)が最初から入っている。

brew install rabbitmq
/usr/local/sbin/rabbitmq-server
open http://localhost:15672/

読んだ資料はこの辺り。

コミュニティ