まず、概念
RabbitMQのは、オープンソースであるメッセージキューのソフトウェアによって提供されるサービスは、LSHIFT AMQPを(アドバンスト・メッセージキュープロトコルアドバンスト・メッセージ・キューイング・プロトコル)のオープンソース実装
、堅牢かつ高性能は、よく知られているErlangの伸縮性に書き込むことができ
、高い安定性と確実
図1に示すように、コアコンセプト:
-
Message
(メッセージ):
匿名のメッセージヘッダとメッセージ本体であるメッセージ
のメッセージ本体およびメッセージヘッダは、オプションの属性の一連の不透明な
これらの属性には、ルーティングキー(キー指定されたルートメッセージ送信先)そして、優先度(他のメッセージに優先相対)と配達-MODE属性(メッセージ永続ストレージかどうか) -
Publisher
(出版社):
プロデューサーメッセージクライアントアプリケーションスイッチへの情報のリリースがあります -
Exchange
(スイッチ):
のためのメッセージキューサーバーにメッセージを受信した経路にプロデューサーから送信されたメッセージ
交換4つのタイプがあります。直接(デフォルト)とファンアウトし、話題とし、ヘッダ
交換を転送されるメッセージの種類ごとにポリシーが違い
の直接のモデルのポイントとファンアウトと話題にポイントを達成し、公開したモデルを購読することができますが、ヘッダーを実現することができます -
Queue
(メッセージキュー):
に使用される保留メッセージを消費者に送信されるまで
、それはメッセージのある容器は、メッセージの終了は、1つ以上のキューにメッセージとすることができるで
キューにキューにメッセージを待つ消費者コネクトととります行きます -
Binding
(結合):
メッセージ・キューとの間でスイッチするために使用される関連する
ルーティングルールをスイッチに結合し、交換機を接続するメッセージキュー結合をルーティングに基づいては、このように理解することができる結合からなるまでルーティングテーブル
為替キューと結合多対することができ、スイッチが複数のキューとキューを結合することができ、複数のスイッチに結合することができる
メッセージ限り、キューをバインドする先のメッセージがスイッチに関係なく送信されました到達することができます -
Connection
(ネットワーク接続):
するために、メッセージキューの動作確立された接続を -
Channel
(チャンネル):
TCP接続を作成し、破壊する非常にオペレーティングシステムのためのリソースであり、それゆえするチャネルの概念を導入しているTCPコネクション多重
チャンネルは独立した双方向のデータパスがリアルタイムで確立された流れの接続を多重化されていますでTCPコネクションの仮想接続の複数 AMQPコマンドは、チャネルを介して送信され
、これらの操作をすることにより達成されるにかかわらず、サブスクリプション・キューまたはメッセージをパブリッシュ受信メッセージチャネルの -
Consumer
(消費者):
メッセージの消費者は、メッセージキューからメッセージを取得するためのクライアントアプリケーションを表します -
Virtual Host
(仮想ホスト):
を表す多数のスイッチやメッセージキューに関連するオブジェクトを
RabbitMQのサーバー上に分割複数の仮想ホストが仮想ホストをされ、同じスタンドアロンサーバードメイン認証と暗号化の環境を共有し
、各仮想ホスト(仮想ホストのための)本質的であるのRabbitMQサーバーのミニバージョンごとの交換が結合する独自のキューと権限メカニズムいる
接続時に仮想ホスト(仮想ホスト)はAMQPの考え方の基本であるが、指定されなければならない
のRabbitMQは、デフォルトの仮想ホスト(仮想ホスト)である使用されています/は、
例えば、彼らの/ ABC /採用/部署などを指定することができます -
Broker
(Message Brokerは):
正確メッセージキューサーバエンティティを表し、
イラスト:
(写真は良いが、それを見ていきます見ていません)
2、操作するメカニズム:
AMQPメッセージルーティング:
RabbitMQのは、使用したサービス仕様メッセージングルーティングAMQPメッセージを
プロセスメッセージをルーティングAMQPをし、Java開発者は、いくつかの違いがあるJMSに精通している
に追加AMQP 取引所(スイッチ)との結合の役割(結合)
Exchangeへのポストメッセージへのプロデューサーをメッセージ待ち行列及び最終消費者にメッセージをキューに送信されるべきバインディング決定交換を受けます
為替交換器タイプ:
:あなたは現在4種類のニュース所を配布する際の配布ポリシーの種類によって異なり、直接、ファンアウト、トピック、ヘッダーの
ヘッダーはそのヘッダーAMQPの代わりに正確にルーティングし、ダイレクトキーモードスイッチのメッセージが、はるかに悪いパフォーマンスを一致させるため、それはほとんど使用されないため、詳細にあまりされていません
ダイレクトモード:
キーメッセージルーティング(キーをルーティング)との結合bindingkey場合、同じスイッチは、対応するキューにメッセージを送信する
ルーティングキーとキュー名と正確に一致しなければなりませんキューは、請求項スイッチ「犬」でのように、ルーティングキーにバインドされている場合を前方にのみ「dog.b」タグ情報をお届けするものではありませんフォワード「dog.a」、「犬」というラベルの付いたキーがニュースであるルーティング
、それがされ、正確なユニキャスト一致モードは、あるポイントにポイント通信モデル
ファンアウトモード:
ファンアウトメッセージに各ヘアピースタイプはに割り当てられているすべてのアップバインドキュー
のメッセージに転送されます単にスイッチの各スイッチに送信するキューをバインドキーをルーティング処理しないスイッチファンアウト交換はにバインドされているすべてのキュー
されたモード放送最速モードが実現するJMSのパブリッシュ・サブスクライブ・モデルですメッセージの高速転送を
ずっと各サブネットのようなサブネットブロードキャスト内のホストがメッセージのコピーを受け取っています
トピックモード:
トピックスイッチによってパターン鍵ルーティングルーティングキープロパティ割り当てメッセージ一致するように、パターンマッチングを今回キュー必要でパターンにバインドする
キーをルーティング文字列と単語間のキーバインディングにそれらの単語を削減します離間点
シンボル*と#記号:とワイルドカード識別
#
代表マッチがゼロ個以上の単語 *
の代表的な単語マッチ
:注単語レベルのマッチングを
第二に、テスト
ドッカーコンテナのRabbitMQの最初のインストール
# 拉取带管理界面的镜像
docker pull docker.mirrors.ustc.edu.cn/library/rabbitmq:3-management
注:バンド管理の次のバージョンでは、インターフェース管理されています
# 启动容器并开放5672和15672端口
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq 479479d8e188
5672
ポートとRabbitMQのクライアント通信15672
ポートの管理インターフェイスであります
ブラウザのアクセスIP:15672管理インターフェイスのデフォルトのアカウントのパスワードを入力するあるゲスト
管理インタフェース:
そして、テストのための3つのスイッチ(交流)を作成
名前付きexchange.direct、exchange.fanoutとexchange.topicは
直下型、ファンアウトタイプとトピックタイプ交換のために使用されている
添加が完了しました
(キュー)をテストするための4つのメッセージキューを追加
すなわち:zjitc、zjitc.news、zjitc.emps、ciczjitc.news
結合(結合)が完了した後に添加しなければならない作業することができるスイッチであることが
結合の直接取引のタイプ:
完成バインディング
そして、バインドファンアウト交換のタイプ:
最後に、バインドするトピック所のタイプ:
完成バインディング
その後、テストメッセージを送信することができます
直接テストスイッチ
メッセージを送信:
送信が完了するとヒントがあるでしょう。
キューのことだけフルネームがメッセージを受信するように、直接交換が完全に一致しているので:
メッセージを正常に受信:
テストファンアウトスイッチ
メッセージを送信:
完了し送信した後、プロンプトがあるでしょう。
すべてのメッセージキューを受けています:
メッセージを正常に受信:
テストトピック・スイッチ
テスト1--
メッセージを送信:
送信が完了したら、プロンプトがあるでしょう:
フロントとリアのすべてのように、キューを一致させることができますので、メッセージを受信したに:
テスト2 -
メッセージを送信:
サフィックスだけのニュースとしてキューに一致する:
メッセージを受信キューのニュースの終わりに: