メッセージキューとは
大量のリモート呼び出しを行う場合、従来の HTTP メソッドではブロッキングが発生しやすいため、メッセージ キューの概念が導入されます。つまり、メッセージをキューに入れてキューに従って消費します。
送信者によって送信された情報をキューに入れることができます。新しいメッセージがキューに追加されると、受信者は処理するように通知されます。一般に、メッセージの送信者はプロデューサーと呼ばれ、受信者はコンシューマーと呼ばれます。
このようにして、すべてのリクエストをメッセージ キューにスローし、コンシューマによって取り出すことができ、コンシューマに直接接続する代わりにミドルウェアが追加されるため、優れた分離ソリューションとなります。また、同時実行性が高い場合、コンシューマの機能が限られているため、メッセージ キューはピークのシェービングと谷の埋め込みの役割も果たし、リクエストの一部を蓄積します。その後、コンシューマはリクエストをゆっくりと処理することになります。直接電話のようなリクエストをしたり、大勢の人が集まったりします。
メッセージキューコンポーネント
ActiveMQ、RabbitMQ、RocketMQ、および Kafka は、現在主流のメッセージ キュー コンポーネントです。それらの特徴は次のとおりです。
上記の要素に基づいて、RabbitMQ がデモンストレーション用のメッセージ キュー コンポーネントとして選択されます。その理由は次のとおりです。
- スループットは高くありませんが、中小規模のプロジェクトには十分です。
- 強力な適時性。遅延は微妙なレベルに達し、同様の製品と比較して最も低い遅延です。
- 高いユーザビリティ。完全な高可用性実装メカニズムを提供します。
- 強い信頼性。基本的にパケットロスはありません。
- 強力な同時実行機能。Erlang に基づいて開発されており、優れたパフォーマンスと低遅延の豊富なスイッチ機能を提供します。
- オープンソースで無料。使用コストはかからず、コミュニティは非常に活発で、製品は安定しています。
メッセージ キュー コンポーネントの機能と実装は似ています。1 つのコンポーネントをよく学べばすべてを取得できます。また、メッセージ キュー コンポーネント間の差異をシールドし、統一された標準を使用できる Spring Cloud Stream などのメッセージ キュー接続コンポーネントもあります。メッセージキューコンポーネントを呼び出します。
したがって、メッセージ キューをマスターしたい場合は、RabbitMQ から始めることをお勧めします。
ラビットMQ
公式サイト: https: //www.rabbitmq.com
RabbitMQ は、アドバンスト メッセージキュー プロトコル ( AMQP ) を実装するオープン ソースのメッセージ ブローカー ソフトウェア (メッセージ指向ミドルウェアとも呼ばれます)です。RabbitMQ サーバーはErlang言語で記述されており、クラスタリングとフェイルオーバーはOpen Telecommunications Platformフレームワーク上に構築されています。すべての主要なプログラミング言語には、プロキシ インターフェイスと通信するクライアント ライブラリがあります。
Rabbit Technologies Ltd. は、 RabbitMQ の開発とサポートを提供しています。
- 当初、Rabbit Technology は 2007 年に LSHIFT と CohesiveFT の間で設立された合弁会社でした。
- 2010 年 4 月に、VMware の子会社である SpringSource に買収されました。
- RabbitMQ は 2013 年 5 月に GoPivotal の一部となりました。
その特徴は次のとおりです。
- 数万人のユーザーを抱える RabbitMQ は、最も人気のあるオープン ソース メッセージ キューの 1 つで、T-Mobile から Runtastic に至るまで、小規模なスタートアップから大企業まで世界中で使用されています。
- 軽量でオンプレミスとクラウドに簡単に導入でき、複数のメッセージング プロトコルをサポートします。
- 大規模な高可用性要件を満たすために、分散構成およびフェデレーション構成で導入できます。
- 多くのオペレーティング システムおよびクラウド環境で実行され、最も一般的な言語に対応する幅広い開発者ツールを提供します。
作業工程:
- プロデューサー (パブリッシャー) : メッセージを生成する端末。
- チャネル: サーバー接続とクライアント接続の両方でチャネルが使用され、そのチャネルを使用して RabbitMQ サーバーにアクセスします。ここでの通信プロトコルはhttpではなくamqpプロトコルです。
- 仮想ホスト: 環境の分離と同様に、仮想ホストは異なる環境で個別に構成できます。各仮想ホストには多数の Exchange とキューを含めることができ、各仮想ホストは相互に影響しません。
- Exchange : リクエストに応じて、対応するメッセージ キューに転送されます。各キューは Exchange にバインドできるため、Exchange はデータをキューに転送できます。実装には多数の異なる Exchange タイプを使用できます。パターンさまざまなメッセージの。
- メッセージ キュー (Queue) : メッセージ キュー自体。プロデューサーからのすべてのメッセージはメッセージ キューに格納され、コンシューマーがメッセージを取り出すのを待ちます。
- Consumer : メッセージを消費する端末。