私は、AMQPプロトコルのフレーム部分を理解しようとしていますよ。AMQPは、最初のTCP接続を開き、複数のTCP接続をセットアップするオーバーヘッドを防ぐために、この接続内の複数のチャネルを使用していることを私は(これは非常によく説明されてそれを得るここ)。今、私はリンクが遊びに来る方法を理解するのに苦労しています。次のように私の理解から、それは動作します:
- 接続(TCP、ほとんどの時間)は(基本的に2つのプログラム)二つの容器の間に設定されています
- 複数のチャネルが作成されます。彼らは、任意のノードに関連付けられていません
- セッションがまだどのノードに関連付けられていない、各方向の2つのチャネルを組み合わせ
- 「リンク」は、各端から2つのノードにセッションをバインド
私の理解は正しいですか?なぜ我々はすでにチャンネルを持っている「リンク」の概念が必要なのですか?なぜだけではなく、チャンネル2つのノード間の接続を作りますか?、平易な英語で、チャンネルとリンクの違いは何ですか?
マイクロソフトの状態:
チャンネルは、一方向、アウトバウンド、接続の上に仮想転送路です。
そして
リンクは、一方向にメッセージを転送可能にするセッションで作成された通信経路であります
これは基本的に私には同じに聞こえます。CANNELS、セッションやリンクがどのように関連しているか、誰かが簡単な言葉で説明することができる場合、私は非常に幸せになります。
長い話を短く
接続は二つのノードを接続する一方向チャネルで作られています。
チャネルは、したがって、接続を構成することができ、ノード間の一方向通信であります
セッションは、二つのチャネルから構成されている(着信および発信)
リンク・プロトコルは、AMQPの中核です。リンクは、2つのノード間の一方向の輸送を提供します。リンクは、ノードに接続する末端。ソースとターゲット:末端の2種類があります。末端は、着信または発信メッセージの特定のストリームの状態を追跡する責任があります。ソースは、送信メッセージを追跡し、ターゲットは、着信メッセージを追跡します。
注意:あなたは、このようなソース/ターゲットとして正確な機能を関連付けることができます先のクライアントでソケットとして末端を考えることができます。
完全な説明
以下のすべての情報および画像は、プロトコルOASISアドバンストメッセージキュープロトコル(AMQP)バージョン1.0の仕様から来ています。詳細については、あなたが読むべき本を。
AMQPネットワークは、リンクを介して接続されたノードで構成されています。ノードは安全な貯蔵及び/またはメッセージの配信を担当するエンティティを命名しています。メッセージは、起源で終端、またはノードによって中継することができます。
接続の必要性が確立され、異なるコンテナ内のノード間で発生する通信のためのために。AMQP接続は、フレームの全二重、確実に順序付けられたシーケンスで構成されています。フレームは、ワイヤ上に担持された作業の単位です。
AMQP接続は独立した一方向チャネルのネゴシエートされた数に分割されます。AMQPセッションは、二つのコンテナ間の双方向、逐次対話を形成する2つの単方向チャネルを相関させます。
単一の接続がネゴシエートチャネル限界まで、同時にアクティブな複数の独立したセッションを有していてもよいです。接続およびセッションの両方は、問題の接続またはセッションに関するローカル及び最後の既知のリモート状態を格納するエンドポイントとして、各ピアによってモデル化されます。
ノード間の転送メッセージのために、リンクは、ノード間で確立される必要があります。リンクは、2つのノード間の単方向経路です。リンクは、末端のノードに接続します。ソースとターゲット:末端の2種類があります。末端は、着信または発信メッセージの特定のストリームの状態を追跡する責任があります。
リンクは、アプリケーションが所与の時点でのメッセージを受信するノードを制御することができ、送信されるメッセージの数に基づいて、クレジットベースのフロー制御方式を提供します