RabbitMQメモ

対象

  • RabbitMQ 3.6.2
    • AMQP 0-9-1

RabbitMQを構成するもの

  • Publisher
    • メッセージを送信するアプリケーション
  • MessageBroker(RabbitMQ)
    • メッセージを仲介する
  • VirtualHost
    • ExchangeやQueueをグループ分けする
  • Exchange
    • Publisherから受け取ったメッセージをBindingの設定に従ってQueueに配送する。
  • Queue
    • Exchangeから配送されてきたメッセージの保管場所

f:id:hkou:20160603230533p:plain

Exchangeの種類

参考: RabbitMQ - AMQP 0-9-1 Model Explained

Fanout

ExchangeにBindしているQueue全てにメッセージを配送する。

Direct

メッセージに含まれるrouting keyとBindingに含まれる routing keyが一致したQueueにメッセージを配送する。

Topic

Direct Exchangeと同じようにrouting keyとBindingのrouting keyを比較するが以下の特徴がある。

  • routing keyは「.」(ドット)で句切られた単語のリストでなければならない
  • Bindingのrouting keyにワイルドカード(のようなもの)が使用できる。
    • 「*」一つの単語に置き換える
    • 「#」0以上の単語に置き換える

Headers

メッセージに含まれるheaderとBinding argumentを比較し一致したQueueにメッセージを配送する。

  • 「x-match:all」headerの完全一致
  • 「x-match:any」headerの部分一致

Exchangeの属性

  • Durability(耐久性)
    • RabbitMQを再起動しても存続するかどうか
  • Auto-Delete
    • 全てのBindingが無くなった時に削除するかどうか

Queueの属性

  • Durability(耐久性)
    • RabbitMQを再起動しても存続するかどうか
  • Exclusive(排他性)
    • 一つだけの接続で使用され、その接続が切断された時にキューが削除される
  • Auto-Delete
    • 全てのConsumerが登録解除した時に削除する

Messageの属性

  • Content type
  • Content encoding
  • Routing Key
  • Delivery mode
    • persistent (永続的)かどうか、RabbitMQを再起動しても存続する
  • Message Priority
  • Message publishing timestamp
  • Expiration period(有効期限)
  • Publisher application id

参考

AMQP 0-9-1 Model Explained RabbitMQ - AMQP 0-9-1 Model Explained

AMQP 0-9-1 Complete Reference Guide https://www.rabbitmq.com/amqp-0-9-1-reference.html