メッセージキューミドルウェアは、ActiveMQのメッセージキューを使用する必要が主にスケーラブルで、アプリケーションは、非同期メッセージング、トラフィック及び他の問題は、高性能、高可用性を達成するために前部切断結合解決するために、最終的に、より一貫[アーキテクチャ]である、分散システム、重要な構成要素であります、RabbitMQの、ZeroMQ、カフカ、MetaMQ 、RocketMQ。
私たちは、トピックの優先順位のRabbitMQを紹介します:
1、RabbitMQのプロフィール
RabbitMQのAMQPは、Erlangの言語が開発したオープンソース実装です。
AMQP :高度なメッセージキュー、高度なメッセージキュープロトコル。これは、このプロトコルのクライアントに基づいて、メッセージ指向ミドルウェアの設計のためのオープンな標準のアプリケーション層のプロトコルであり、メッセージングミドルウェアメッセージを送信することができ、製品開発言語の制限の対象ではありません。
RabbitMQのは、分散システムで、使いやすさ、拡張性、高可用性の面で、よくやってストアアンドフォワードメッセージを金融システムに由来しました。具体的な機能は次のとおりです。
1.信頼性(信頼性)
のRabbitMQの放出を確認し、そのような永続性、送達確認として、信頼性を確保するために、いくつかのメカニズムを使用します。
2.柔軟なルーティング(柔軟なルーティング) メッセージ・キューに入る前に、メッセージは、Exchangeを介してルーティングされます。典型的なルーティング機能については、RabbitMQのは、組み込みの交換を達成するためにいくつかを提供してきました。より洗練されたルーティング機能では、複数のExchangeは、互いに結合することができますが、また、プラグイン機構を通じて交流を実現します。
3.クラスタ・メッセージ(クラスタリング)
サーバRabbitMQの複数のクラスタを形成する論理ブローカを形成することができます。
4. HA(高可用性キュー)
クラスタ内のキューはキューは、問題のノードのうちのいくつかのケースではまだ利用され、その結果、マシンにミラーリングすることができます。
複数のプロトコルは、(マルチプロトコル)
RabbitMQのメッセージキューは、STOMP、MQTT等のような複数のプロトコルをサポートします。
6.多言語クライアント(多くのクライアント)
のRabbitMQ支持体は、ほぼすべての一般的なので、上のJava、.NET、Rubyの、およびなどの言語を使用します。
7.管理インターフェース(管理UI)
RabbitMQのは、ユーザーがメッセージブローカーの多くの側面を監視および管理できるように、ユーザーインターフェイスを使用して簡単に提供します。
8.トラッキング機構(トレース)
メッセージが異常である場合、RabbitMQの機構を追跡メッセージを提供し、ユーザは何が起こったのかを知ることができます。
プラグイン機構(プラグインシステム)9.
RabbitMQのは、多くの方法で拡張することがプラグインの数を提供し、あなたはまた、独自のプラグインを書くことができます。
図2に示すように、主な概念の概略図
(1)チャート
(2)主な概念
RabbitMQのサーバー:また、トランスポート・サービスであるブローカー・サーバとして知られています。彼の役割は、データが指定された方法に従って送信することができ確実に生産者から消費者までのルートを維持することです。
プロデューサー: A、B、C、データとして送信者メッセージプロデューサ。メッセージプロデューサ接続のRabbitMQサーバーは、Exchangeにメッセージを配信します。
消費者:メッセージコンシューマ、1,2,3図の受信者データ。メッセージの消費者のサブスクリプション・キュー、RabbitMQのは、キューのメッセージコンシューマにメッセージを送信します。
交換:プロデューサはキュー以上(または廃棄)に交換経路によって、交換機(スイッチ)にメッセージをメッセージを送信します。取引所は、メッセージを保存しません。取引のRabbitMQは、直接、ファンアウト、トピック、ヘッダー4種類の異なるルーティングルールに対応する各タイプを有しています。
キュー:(キュー)は、メッセージを格納するため、RabbitMQの内部オブジェクトです。メッセージコンシューマは、RabbitMQのメッセージは、キューだけ、プロデューサー、キューに配信されるメッセージの最終生産に格納され、消費者はキューと消費からメッセージを取得することができ、サブスクリプションのキューを介してメッセージを取得することです。より多くの消費者が同じキューを購読することができ、キューのメッセージは、すべての消費者がすべてのメッセージとハンドルを受け取るのではなく、処理するために複数の顧客に均等に配分されます。
RoutingKey:Exchangeにメッセージを送信する時間での生産は、一般的にニュースを支配し、そして最終的に有効にするために、組み合わせて使用し、このキーのニーズと交換タイプをルーティングし、結合キーのルーティングを指定するには、ルーティングのキーを指定します。固定された交換タイプでの結合キーケース(通常これらの要素は、通常の使用で設定固定されている)、私達の生産は、ここでメッセージ・フローを決定するためのルーティングキーを指定することで、Exchangeにメッセージを送信します。RabbitMQのは255bytesに限定されるキーの長さをルーティング設定されています。
接続:(接続):生産と消費者は、TCP経由のRabbitMQサーバーに接続されています。その後、我々は、このプログラムの最初のTCPコネクションを確立することである見ることができます。
チャネル:(チャンネル):これは、上述したTCPコネクション上に構築されています。データ・フローは、チャンネルで行われます。、一般的には、TCPコネクションを確立するためのプログラムを起動されていること、第二段階は、チャンネルを構築することです。
VirtualHost:アクセス制御の基本単位は、そこのVirtualHost Exchangeおよびメッセージキューの数であり、どのユーザーを指定するために使用されます。
3、RabbitMQのインストールと起動
ここでRabbiMQをインストールするには、ドッカーコンテナで、ドッカーの靴を理解していない---この記事を見てドッカーエントリとインストールを ---
(1)このステップは):(ダウンロード画像を省略しています
docker pull rabbitmq:manageme
(2)コンテナを作成し、RabbitMQのは、次のポートをマッピングする必要が:5671 5672 4,369,156,711,567,225,672
- 15672(管理プラグインが有効になっている場合)
- 15671管理リスニングポート
- 5672、5671(AMQP 0-9-1無し及びTLSを使用)
- EPMD 4369(EPMD)Erlangのポートマッピングデーモンの代わりに
- 25672(アーラン分布)
docker run ‐di ‐‐name=tensquare_rabbitmq ‐p 5671:5617 ‐p 5672:5672 ‐p4369:4369 ‐p 15671:15671 ‐p 15672:15672 ‐p 25672:25672 rabbitmq:manageme
(3)ブラウザへのアクセスのhttp:// IP:15672 /#/
デフォルトのユーザゲストパスワードゲスト
ここでRabbitMQの管理インターフェースであります