チーム勉強会: RabbitMQ
前に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)が最初から入っている。
|
|
読んだ資料はこの辺り。
- チュートリアル
- はじめての RabbitMQ
- AMQPによるメッセージング
- RabbitMQと再送について
- Sprint AMQP × RabbitMQ
- RabbitMQの導入と、Spring AMQPを利用したメッセージ送受信
- RabbitMQ3.1の導入とCluster構成を検証する