Source

django-celery-about / source / rabbitmq.rst

Full commit

AMQP:Kombu reference

AMQPモデル

Message = Header + Body

Header

Routing Key
  • 単純な文字列で、Brokerが Exchage -> Queueuのルーティング判定に使われます。
  • このキーがどの用に使われるかは Brokerの Exchange Typeで決まります。

Properties

  • Messageがどのようにあつかわれるか。
  • Brokerがシャットダウンしてもリスタート後に実行する、だとか。
  • Priority(優先度)とか。

Clients = Publisher & Consumer

  • ClientはBroker に対して Connectionを開き、Sessionの中で処理します。

Publisher ( Producer )

  • Publisher は Exchange に対して Messageを送信する Clientです。

Consumer

  • Consumer は QueueからMessageを受け取るClientです。

Session & Connection

Session

  • ClientとBrokerの間のインターフェースです。
  • 同期のSessionと非同期Sessionがあります。
  • Connectionを使って通信します。

Connection

  • BrokerとClient との間のネットワーク接続です。

Broker = Exchange + Binding + Queue

Exchange

  • ProducerからSessionを通じてMessageを受け取ります。

Bindiing (Routing Table?)

  • ExchangeとQueueをひもづけるcriteriaです。
  • Exchangeに入ったMesasgeを適切なQueueに送ります。

Queue

  • Consumerに対してSessionを通じてMessageを渡します。
  • ConsumerがMessageをDequeueするまで保持します。(auto-delete)
  • あと、Exclusiveな属性でConsumerをえり好みするとか。