前にRabbitMQ について聞きかじった。当時のメモを残しておく。

目次

RabbitMQ 概要

RabbitMQはMQでQueueを提供する。 非同期の永続化通信を実現する。

MQを含めたメッセージ指向ミドルウェア(MOM) は疎結合を維持しながら複数システム間の連携を実現する。

非同期で永続化通信を提供しているミドルウェアが故障しない限り 永続化で通信内容を保証しつつ同時稼働という時間的制約をなくせるため 複数システムを連携させても各システムの切り離し易さを維持できると見れるから。 MQが動く限り、コンポーネントの故障によるシステム停止の範囲を小さくできる。

これは単純には言い切れず、MQが故障すると両端で故障が検出される。 だからといってMQを増やすとコンポーネントが増えて故障確率もコストも増える。

サポートプロトコル

幾つかのMQプロトコルがある。

AMQPは複数バージョンがサポートされていてサポート状況にまとめられている。

モデル(仕様)

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

コンポーネント 内容
メッセージ メッセージ自体(優先度,永続化などオプション多数,Queueが対応してれば動く)
exchagne メッセージの投入先, Queueへの振り分けを行う
Queue メッセージを溜め込むFILO
Producer メッセージを送信するクライアント
Consumer メッセージを受信するクライアント

実装

リポジトリ

言語 Erlang
フレームワーク OTP

表にするまでもなくErlangで書かれてる大きめなシステムならたいていOTPは使わってるとは思う。

勉強用資料

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

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

読んだ資料はこの辺り。

コミュニティ