RabbitMQメッセージキュー:概要
概要
メッセージキューは、異なるプロジェクト間の通信、トラフィックのデカップリングを解決するために使用されます.メッセージキューには、Redisで実装される軽量レベルのメッセージキューなど、多くの種類があります.RabbitMQはメッセージキューの一種であり、AMQPプロトコルに基づいてErlang言語で記述され、メッセージキューミドルウェアに属する.
メッセージメカニズム
接続リンク
リアルTCPリンク
チャネル
Connectionに基づいて作成されたチャネルは、すべてのデータ転送がチャネルに基づいています.TCPリンクは3回の握手が必要であることはよく知られており、業務が頻繁にTCPリンクを開くたびに性能に大きな損失があり、TCPリンク数にも制限がある.Channelの存在は主にTCPリンクを多重化するためである.
Exchangeスイッチ
メッセージ作成者が作成したすべてのメッセージは、まずExchangeに書き込まれ、Queuesにルーティングされます.Exchangeにバインドされていないか、Queuesに一致していない場合は、メッセージは破棄されます.
Queuesキュー
生産者が生産するメッセージはExchangeからQueuesにルーティングされ、消費者はQueuesからメッセージを消費する.
Bindingバインド
BindingはExchangeをQueuesに関連付けます.
Routing keyルーティングキー
ルーティングキーは、メッセージがExchangeからQueuesに入るルールです.QueuesをExchangeにバインドすると、ExchangeからQuesにメッセージをルーティングするバインドルーティングキールールが設定されます.メッセージをExchangeに書き込むときにメッセージのルーティングキーが付きます.
Exchangeタイプがdirectまたはtopicの場合、メッセージの配信はメッセージのルーティングキーとバインドされたルーティングキーに基づいてマッチングされ、Exchangeはメッセージをすべてのマッチング上のQueuesに配信します.
ルーティングキーの書き方
ルーティングキーは、
適用例
Exchange
Routing key
Queues
X
apple
X
apple
X
phone
メッセージ・ルーティング・キー
Exchange Typeスイッチタイプ
fanout放送
fanoutタイプのExchangeは、ルーティングキーを無視して、そのExchangeにバインドされているすべてのQueuesにメッセージを送信します.
directユニキャスト
DirectタイプのExchangeは、ルーティングキーが完全に一致するQueuesにメッセージを送信します.
topicマルチキャスト
topicタイプのExchangeでは、ルーティングキーがあいまいに一致するQueuesにメッセージが送信されます.
headers
headersタイプのExchangeでもルーティングキーは無視され、headersの属性によってマッチングされます.このタイプの応用は少ないが,RabbitMQ内部ではまだ使用されている.
メッセージキューは、異なるプロジェクト間の通信、トラフィックのデカップリングを解決するために使用されます.メッセージキューには、Redisで実装される軽量レベルのメッセージキューなど、多くの種類があります.RabbitMQはメッセージキューの一種であり、AMQPプロトコルに基づいてErlang言語で記述され、メッセージキューミドルウェアに属する.
メッセージメカニズム
接続リンク
リアルTCPリンク
チャネル
Connectionに基づいて作成されたチャネルは、すべてのデータ転送がチャネルに基づいています.TCPリンクは3回の握手が必要であることはよく知られており、業務が頻繁にTCPリンクを開くたびに性能に大きな損失があり、TCPリンク数にも制限がある.Channelの存在は主にTCPリンクを多重化するためである.
Exchangeスイッチ
メッセージ作成者が作成したすべてのメッセージは、まずExchangeに書き込まれ、Queuesにルーティングされます.Exchangeにバインドされていないか、Queuesに一致していない場合は、メッセージは破棄されます.
Queuesキュー
生産者が生産するメッセージはExchangeからQueuesにルーティングされ、消費者はQueuesからメッセージを消費する.
Bindingバインド
BindingはExchangeをQueuesに関連付けます.
Routing keyルーティングキー
ルーティングキーは、メッセージがExchangeからQueuesに入るルールです.QueuesをExchangeにバインドすると、ExchangeからQuesにメッセージをルーティングするバインドルーティングキールールが設定されます.メッセージをExchangeに書き込むときにメッセージのルーティングキーが付きます.
Exchangeタイプがdirectまたはtopicの場合、メッセージの配信はメッセージのルーティングキーとバインドされたルーティングキーに基づいてマッチングされ、Exchangeはメッセージをすべてのマッチング上のQueuesに配信します.
ルーティングキーの書き方
ルーティングキーは、
.
、例えばcomputer.mac
またはcomputer.win
によって区切られることができる.ルーティングキーはまた、ファジイマッチングのためのワイルドカードもサポートし、*
と#
の*
は、1つの区切りの単語#
と一致し、複数またはゼロの区切りの単語に一致する.適用例
Exchange
Routing key
Queues
X
*.*.imac
apple
X
apple.#
apple
X
*.phone.*
phone
メッセージ・ルーティング・キー
apple.phone.iphone4
が書き込まれると、キューappleおよびphoneに送信されます.メッセージ・ルーティング・キーがapple.computer.imac
に書き込まれるとappleにのみ送信され、appleキューは2つのルーティング・キーに一致しますが、appleには1回のみ送信されます.メッセージルーティングキーがmicro.computer.win
に書き込まれるのは、一致するルーティングキーキューがないため、メッセージが破棄されるからである.Exchange Typeスイッチタイプ
fanout放送
fanoutタイプのExchangeは、ルーティングキーを無視して、そのExchangeにバインドされているすべてのQueuesにメッセージを送信します.
directユニキャスト
DirectタイプのExchangeは、ルーティングキーが完全に一致するQueuesにメッセージを送信します.
topicマルチキャスト
topicタイプのExchangeでは、ルーティングキーがあいまいに一致するQueuesにメッセージが送信されます.
headers
headersタイプのExchangeでもルーティングキーは無視され、headersの属性によってマッチングされます.このタイプの応用は少ないが,RabbitMQ内部ではまだ使用されている.