RabbitMQメモ
対象
- RabbitMQ 3.6.2
- AMQP 0-9-1
RabbitMQを構成するもの
- Publisher
- メッセージを送信するアプリケーション
- MessageBroker(RabbitMQ)
- メッセージを仲介する
- VirtualHost
- ExchangeやQueueをグループ分けする
- Exchange
- Publisherから受け取ったメッセージをBindingの設定に従ってQueueに配送する。
- Queue
- Exchangeから配送されてきたメッセージの保管場所
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