RabbitMQの公式サイト:https://www.rabbitmq.com
-
アウトライン
ほとんどのアプリケーションでは、非同期通信システムはメッセージミドルウェアを介してサービスを強化するために、力を切り離す拡張。
- 二つの重要な概念でサービスをメッセージング:
- メッセージブローカ(メッセージブローカ)と(あなたが欲しいん)先メッセージの送信者がメッセージブローカによって引き継がれたメッセージを送信すると、メッセージブローカは指定された宛先にメッセージを確実にします。
- 先のメッセージキューの二つの主要な形式があります
- キュー(待ち行列):ピア・メッセージング(ポイントツーポイント)
- テーマ(トピック):出版(パブリッシュ)/サブスクライブ(サブスクライブ)メッセージング
- ポイントへのポイント:
- メッセージを送信するメッセージの送信者は、メッセージブローカがキューに入れ、メッセージ受信者は、キューからのメッセージの内容を取得し、メッセージは、メッセージが唯一の送信者と受信者を持っていますが、しかないことができることを意味するものではありません後にキューから読み出されます受信者
- 公開されたサブスクライブ:
- 送信者(出版社)は、複数の受信者(加入者)リスニングは、メッセージが到着したときに、このテーマは、それが同時にメッセージを受信します(をサブスクライブ)のトピックにメッセージを送信します
- JMS(Java Message Serviceの)Javaメッセージサービス:
- JVM仕様は、メッセージブローカに基づいています。ActiveMQの、HornetMQはJMSの実装です
- AMQP(アドバンスト・メッセージキュープロトコル)
- 高度なメッセージキュープロトコルは、メッセージブローカの仕様に準拠したJMS RabbitMQのAMQPを達成することです
-
JMSとAMQPを比較します
|
ETC. |
AMQP |
定義 |
Javaの火 |
ラインレベルのネットワークプロトコル |
クロスランゲージ |
ノー |
それはあります |
クロスプラットフォーム |
ノー |
それはあります |
モデル |
オファー2つのメッセージングモデル: (1)、ピア-2-ピア (2)、パブ/サブ |
オファー5つのモデルのメッセージ: (1)直接交換 (2)、ファンアウト交換 (3)、トピックの変更 (4)、ヘッダ交換 (5)システムの交換 本質的に、後者の4およびJMSパブ/サブモデルは、ルーティングメカニズムに関するより詳細な内訳を行うために、大きな違いはありません。 |
サポートメッセージの種類 |
複数のメッセージの種類: メール MapMessage メッセージを変更します StreamMessageの ObjectMessage メッセージ(唯一のメッセージヘッダおよびプロパティ) |
バイト[] 実際のアプリケーションでは、複雑なメッセージを有する場合、メッセージは、シリアル化した後に送信することができます。 |
総合評価 |
JMSは、Java APIレベルの標準を定義し、Javaシステムでは、複数のクライアントは、両方のJMSを介して相互作用することができ、アプリケーションのコードを変更する必要がありますが、クロスプラットフォームのためのその貧弱なサポートはありません。 |
AMQPは、標準的なワイヤ・レベルのプロトコル層を定義する;天然クロスプラットフォーム、クロス言語機能。 |
-
RabbitMQのプロフィール
- RabbitMQのプロフィール:
RabbitMQはAMQP(Advanvedメッセージキュープロトコル)によって開発されたアーランは、オープンソースの実装です。
- コアコンセプトメッセージ
メッセージは、メッセージは、メッセージヘッダとメッセージ本体で構成され、匿名です。メッセージ本体が不透明であり、そして任意の属性一連のメッセージヘッダは、これらの属性は、ルーティングキー(ルーティングキー)、優先度(他のメッセージに優先順位と比較)、配送モードを含む(メッセージがする必要があることを示します永続ストレージ)と上のようにします。
- 出版社
クライアントアプリケーションの生産者のメッセージは、また、スイッチにメッセージを発行しました。
- 両替
サーバーのキューにメッセージプロデューサとルートに送信されたメッセージを受信するために、切り替えます。交換4つのタイプがあります。直接(デフォルト)、ファンアウト、トピック、およびヘッダは、為替政策の異なる種類のメッセージの転送に異なります
- キュー
メッセージキューは、消費者に送信されるまでメッセージを保存するために使用しました。これは、メッセージのコンテナで、メッセージは終わりです。メッセージは、1つ以上のキューに入れることができます。メッセージは、消費者がそれを削除しますキューに接続するのを待って、待ち行列の内部にありました。
- バインディング
メッセージキューとスイッチとの間の関連を結合。キーベースのルーティングルールおよびメッセージキューを接続するスイッチである結合、スイッチを結合することにより構成されるルーティングテーブルであると理解することができます。取引所キューと結合は、多くの関係に多くのことができます。
- 接続
そのようなTCP接続などのネットワーク接続、。
- チャネル
チャンネル、独立した双方向のデータ接続流路多重化。チャンネルの仮想接続は、実際のTCPコネクションに設立され、AMQPコマンドは、サブスクリプション・キューまたは、これらのアクションは、チャネルを介して行われたメッセージを受信することを発表しているかどうか、チャネルを介して送信されます。TCPと破壊の設立以来、TCP接続を再利用するためには、非常に高価なオペレーティングシステムのオーバーヘッド、そのチャネルの概念を導入しています。
- 消費者
メッセージキューから情報を取得するためのクライアントアプリケーションを示す消費者メッセージ。
- 仮想ホスト
ウェブホスティングは、スイッチ、メッセージキュー、および関連するオブジェクトのグループを表します。ウェブホスティングは、同じスタンドアロンサーバードメイン認証と暗号化の環境を共有しています。RabbitMQのサーバのミニバージョンでは、各バーチャルホストのキュー、スイッチ、結合メカニズムと権限、独自に、本質的です。AMQPは、バーチャルホストの考え方の基本は、接続時に指定する必要があり、RabbitMQのは/デフォルトのバーチャルホストです。
- ブローカ
エンティティが表すメッセージキューサーバー
-
RabbitMQの操作機構
-
メッセージルーティングAMQP
AMQPメッセージルーティングプロセスとJava開発者は、いくつかの違いがあるJMSに精通している、AMQPは、Exchangeとの結合ロールに追加しました。生産者は、Exchangeに投稿されたメッセージ、メッセージキュー、最終的に消費者が受信し、そのメッセージを切り替えるに結合する決定がキューに送信されなければならないリーチを置きます。
-
交換タイプ
直接、ファンアウト、トピック、ヘッダ:流通政策の違いのタイプに応じてメッセージを配信する場合があり取引所、4種類ありました。AMQPメッセージヘッダは、次の3つのタイプにさらに正確にルーティングヘッダに一致する代わりに、キー、直接交換スイッチとヘッダーが、パフォーマンスはほとんどもう使用されない、乏しいたくさんあるので、直接見て:
1)、直接交換
キー(ルーティングキー)メッセージルーティング、およびバインディングキーバインディング一致スイッチは、対応するキューにメッセージを送信するかどうか。キューがキーメッセージルーティング」は「犬」を標識し、「dog.puppy」を転送していない、と提供していないだけで、前方、請求ルート「犬」のように、キースイッチにバインドされている場合、ルーティングキーは、正確な、キューの名前と一致しますdog.guard「というように。これは、完全一致、ユニキャストモードです。
2)は、Exchangeをファンアウト
ファンアウトメッセージに各ヘアピースタイプは、最大バインドされているすべてのキューに割り当てられます。ファンアウトスイッチは、単にスイッチキューに特異的に結合するルーティングキーは、処理しない、交換器に送られた各メッセージは、スイッチが結合したすべてのキューに転送されます。サブネットブロードキャストなどの多くは、各サブネット内のホストは、メッセージのコピーを受け取っています。メッセージを転送のファンアウト型が最速です。
3)、トピック所
キー属性割当てメッセージ、ルーティング鍵とパターンマッチングをルーティングトピックスイッチモードに一致する、ケースは、キューモードに結合することが必要です。これは、これらの言葉は、ドットで区切られ、単語にキーとキーバインディングをルーティングする文字列をカットします。また、2つのワイルドカードを識別します:記号「#」記号を「*。」#*単語と一致し、ゼロ以上の単語にマッチします。
-
RabbitMQのインストールのテスト
-
RabbitMQのインストール
ドッカーミラー搭載のRabbitMQの1)、使用
[root@localhost ~]# docker pull rabbitmq:3-management
2)、ミラー開始のRabbitMQ
[root@localhost ~]# docker run -d -p 5672:5672 -p 15672:15672 --name myRabbitMq 985adbf1306
-d:背景;-p:ポートクライアントとRabbitMQの通信ポート15672、管理インターフェースであるポートドッカー容器に5672ホストポートマッピングポートマッピング; - 名:現在実行中の名前; 985adbf1306(IMAGE ID)
3)、アクセス管理RabbitMQのページ
ユーザー名、パスワードのゲスト
-
RabbitMQのテスト
1)、RabbitMQのメッセージ概略
2)交換の作成交換
exchange.direct、exchange.fanout、exchange.topic
3)メッセージキューのキューを作成します
こんにちは、hello.news、hello.emps、helloWorld.news
4)、および結合キュースイッチ
作業キューおよびスイッチに結合されなければなりません
それぞれ切り替えるexchange.direct、exchange.fanout、exchange.topic、それぞれが結合しているこんにちは、hello.news、hello.emps、helloWorld.news
トピック結合ルールは同じではありません
5)、メッセージキューにメッセージを送信
- exchange.directスイッチは、メッセージを送信します
- exchange.fanoutスイッチは、メッセージを送信します
- exchange.topicスイッチは、メッセージを送信します
-
RabbitMQの統合SpringBoot
1)プロジェクトSpringBootを作成します。