AMQP

だいたいここAMQP 0-9-1 Model Explained — RabbitMQを読めばわかる。

以下メモ。

  • broker

producerからmessageを受け取って、consumerにroutingする。
MQのキューマネージャみたいなものか?

  • Exchange

producerからの、受け口。
以下のような属性項目をもっている。

    • Type

受け口であるExchangeから、Queueへの転送のやり方。Direct/Fanout/Topic/Headersの4種類ある。

    • Name

名前

    • Durability

RabbitMQ再起動後も同じExchangeを残すか、残さないか

    • Auto-delete

誰も使わなくなったらExchangeを消すか、消さないか

    • Arguments

任意の引数。使い道はbrokerに依存するっぽい。

  • Binding

ExchangeがmessageをQueueに配送するために使用する、ルールのようなもの。
exchange Eに対して、メッセージをqueue Qに配送するよう指示するためには、QがEにバインドされている必要がある。
exchangeのtypeによっては、ルーティングキーを使う場合もある。

  • Queue

キュー。以下の属性をもつ。

    • Name

名前。アプリケーション側から自由に名づけてもよいし、brokerに任せて自動で名づけてもらうこともできる。

    • Durable

再起動後も同じQueueを残すかどうか。
durable queueのみがdurable exchangeにバウンドできる。queueがdurableであっても、messageがdurableとは限らない。

    • Exclusive

1コネクションのみで使用され、そのコネクションが閉じたら削除されるようにする。

    • Auto-delete

最後のコンシューマがunsubscribeしたら自動削除する。

    • Arguments

任意の引数。これもbroker依存っぽい。

  • Connection

TCPのコネクションにほぼ対応する概念。

  • Channel

同一Connection中で複数のChannelを持つことができる。複数スレッドのときには、1スレッドに1channelを対応させるようなイメージ。

  • Virtual Hosts

環境(SI用語で言う「面」かな)のようなものを実現する。

MQで、キューマネージャが2個あって、マネージャ接続させてローカルのマシンからリモートのマシンに転送する場合に、リモートキュー、トランスミッションキュー、チャネル、宛先ローカルキューとなっているのが、AMQPだとExchange、Queueになっているようなイメージと、とりあえず一旦理解した。

MQ設計虎の巻: 第1回「WebSphere MQの特長と主な機能(前編)」
MQ設計虎の巻: 第2回「WebSphere MQの特長と主な機能(後編)」