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の特長と主な機能(後編)」