AMQPとは何なのか
Rabbit MQを理解するためにAMQPとは何か、から調べてみた
まずAMQPはAdvanced Message Queuing Protocolの略語で、アプリケーション層のバイナリプロトコルらしい
色々なメッセージングアプリケーションやコミュニケーションパターンを効果的にサポートするために設計されたらしい(とWikipediaに書いてある)
RabbitMQ以外にもいろんなQueueが対応している
AMQP仕様のバージョンについて
最新は1.0(Final)だが、AMQPで使われているのは0-9-1らしい。
ここにも書いてあるとおり0.9-1から1.0になる際にmessage brokerの部分がごそっと消えていて、Exchangesが消えたりProducerやConsumerじゃなくてtargetsとsourcesになっていたり大きな変更をされている。変わりすぎていて困る……が、RabbitMQが準拠しているのは0-9-1の方のようなので0-9-1の方を調べてみよう
GREEさんのサイトの説明がわかりやすいので引用するが要するにBindingにあるルールを元にExchangeがメッセージを特定のMessageQueueに割り振るということらしい
他にもメソッド(操作)の定義やメッセージ本体の仕様の定義、メッセージフローの仕様などあるが、それらはまた次回に
参考文献
- Advanced Message Queuing Protocol(Wikipedia) http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol
- AMQP.org https://www.amqp.org/
- AMQPによるメッセージング(土井さん) http://labs.gree.jp/blog/2010/06/262/
- RabbitMQ のドキュメントを拾い読みしたのでメモと Ruby から RabbitMQ を使う Bunny を試してみた http://qiita.com/inokappa/items/4478145ef3b6595259b3
- RabbitMQ AMQP 0-9-1 Model Explained https://www.rabbitmq.com/tutorials/amqp-concepts.html