概要
マイクロサービスであろうと分散システムアーキテクチャであろうと, メッセージキューイングミドルウェアは不可欠で重要なリンクです. 主流のメッセージキューイングミドルウェアにはRabbitMQ, RocketMQなどがあります. この記事から, RabbitMQに代表されるメッセージを詳しく紹介します. .
AMQP プロトコル
- AMQP プロトコルは、ユニファイド メッセージング サービスを提供するアプリケーション層の標準プロトコルです. このプロトコルに基づくクライアントとメッセージ ミドルウェアはメッセージを送信できます. また、異なるクライアント/ミドルウェア製品や異なる開発言語によって制限されることはありません.
- AMQP プロトコルは、クライアント アプリケーションとメッセージ ミドルウェア間の安全で効率的な非同期対話を提供するバイナリ プロトコルです。
- AMQP は、中間層サービスとして、メッセージの生成と消費を分離します. コンシューマが例外を生成した場合、コンシューマによるメッセージの消費には影響しません. コンシューマが異常な場合、プロデューサによって生成されたメッセージは、サービスのメモリまたはディスクは、消費率に影響を与えません. 同時に、ルーティング ルールに基づいて、指定されたコンシューマにメッセージを配信して消費することもできます.
AMQP プロトコルの重要な役割
1. 生産者と消費者
- プロデューサーはメッセージを生成するサブジェクトであり、コンシューマーはメッセージを消費するサブジェクトです。
- データの統合とシステムの分離、非同期処理とイベント ドリブン、トラフィック Xuefeng、トランザクション メッセージと分散トランザクションの結果整合性
- プロデューサはメッセージを生成してメッセージ ブローカにスローし、メッセージ ブローカは配信ルールに従ってメッセージをコンシューマに渡します。
2.スイッチ
- スイッチはメッセージ ブローカーのルーターのようなものです. メッセージを取得した後, 特定のルール (ルーティング キー) に従って 1 つまたは 0 つのキューにルーティングします. スイッチには複数のルーティング モードがあります.
- メッセージ プロデューサとルーティング ルールに基づいて、指定されたメッセージ キューにメッセージを配信できます. スイッチは、プロデューサによって配信されたメッセージを受信し、ルーティング ルールとキューのバインド関係に基づいて、配信に対応するスイッチまたはキューを照合します配布. スイッチはメッセージを保存しません. リツイートするだけです.
スイッチタイプ:
- スイッチに直接接続: ルーティング キーの正確な一致に従って、対応するキューに配信します
- 扇形のスイッチ: ルーティング キーに関係なく、メッセージがコピーされ、それにバインドされているすべてのキューにルーティングされるため、ブロードキャスト効果が得られます。
- トピックスイッチ:パターンマッチングによるルーティングキーに応じて対応するキューに配信
- スイッチには独自の属性もあり、独自の名前、永続的かどうか、およびその他のオプションを定義できます。
3.キュー
- キューはメッセージの一時的な保管場所です. 少なくとも 1 つのコンシューマがキューをサブスクライブすると, メッセージはこれらのサブスクライブされたコンシューマにすぐに送信されます. ただし, メッセージが無人サブスクリプション キューに到達すると, メッセージはキューで待機します.次に、消費者が配布します。
- Exchange とメッセージ キューの間にはバインド関係があり、メッセージが Exchange に到着すると、ルーティング ポリシーに基づくルーティング ポリシーに基づいて、バインドされたメッセージ キューにメッセージを配信できます。
- Message queues store messages in memory or disk, and forward these messages to one or more consumer in a certain order. 各メッセージ キューは独立して分離されており、互いに影響しません。
- メッセージ キューにはさまざまな属性 (プライベート、共有、永続、一時、クライアント定義またはサーバー定義など) があり、実際のニーズに基づいて対応するタイプを選択できます。
4.メッセージ
- メッセージは情報のキャリアであり、AMQP プロトコルのエンティティです。メッセージは 2 つの部分で構成されます。
- ペイロード: 実際の情報、送信したいコンテンツ。コンテンツのこの部分はメッセージ ブローカーに対して透過的です。
- メタ情報: ルーティング キー、コンテンツ タイプ、エンコーディング、永続性などのメッセージ属性を含み、メッセージ エージェントによって解析されます. メッセージ エージェントは、メッセージ属性に従ってメッセージを配信および保存します. この部分は関連していますメッセージエージェントによって. そして消費者はそれを気にしません.
5.チャンネル
- ネットワーク チャネルは接続リンク上に構築された軽量のリンクです. ほとんどすべての操作はチャネルで実行されます. チャネルはメッセージを読み書きするためのチャネルです. クライアントは各チャネルへのリンクを確立できます, 各チャネルはセッションを表します.タスク。
- 1 つの接続で任意の数のチャネルを作成できます