12.2.3. リンクルートの例: 異なるネットワーク上でのクライアントおよびブローカーの接続
この例は、リンクルートがクライアントを別のプライベートネットワークにあるメッセージブローカーに接続できる方法を示しています。
図12.6 分離されたクライアントを使用するルーターネットワーク
クライアントは、独自のネットワーク (R3
) でルーターに接続するためにファイアウォールポリシーによって制限されます。ただし、リンクルートを使用して、異なるネットワーク上にある場合でも、メッセージブローカー B1
および B2
を指定した他の AMQP サービスにアクセスできます。
この例では、クライアントは Private Network 1
のブローカー B2
でホストされる b2.event-queue
からメッセージを受信する必要があります。リンクルートは、クライアントとサーバー間にルーターネットワークがあることを認識していても、クライアントとブローカーを接続する。
ルーターの設定
クライアントがブローカー B2
で b2.event-queue
からメッセージを受信できるようにするには、ルーター R2
が以下を実行できる必要があります。
-
ブローカー
B2
への接続 -
ブローカー
B2
間のルートリンク -
b2.event-queue
アドレスを持つリンクの有効な宛先として、ルーターネットワークにアドバタイズします。
ルーター R2
の設定ファイルの関連する部分で、以下が表示されます。
connector { 1 name: broker role: route-container host: 192.0.2.1 port: 61617 saslMechanisms: ANONYMOUS } linkRoute { 2 prefix: b2 direction: in connection: broker } linkRoute { 3 prefix: b2 direction: out connection: broker }
- 1
- ルーターからブローカー
B2
への外向き接続。route-container
ロールにより、ルーターは外部 AMQP コンテナー (この場合はブローカー) に接続できるようになります。 - 2
- クライアント送信者からリンクを受信するための受信リンクルート。
b2
で始まるアドレスがブローカーB2
で始まるターゲットを持つ送信者は、broker
コネクターを使用してブローカー B2 にルーティングされます。 - 3
- クライアントレシーバーへのリンクを送信するための出力リンクルート。ソースアドレスが
b2
で始まるレシーバーは、broker
コネクターを使用してブローカーB2
にルーティングされます。
この設定では、ルーター R2
は、b2
で始まるターゲットおよびソースの有効な宛先としてアドバタイズできます。また、ルーターはブローカー B2
に接続でき、b2
接頭辞で始まるキューとキューからリンクをルーティングできるようにします。
必須ではありませんが、ルーター R1
と R3
でも同じ設定が必要です。
クライアントがメッセージを受信する方法
設定されたリンクルートを使用すると、クライアントは異なるネットワーク上にある場合でもブローカー B2
からメッセージを受信できます。
ルーター R2
はブローカー B2
への接続を確立します。接続が開かれると、R2
は他のルーター (R1
および R3
) に、これが b2
接頭辞へのリンクルート用の有効な宛先であることを通知します。つまり、R1
または R3
に割り当てられた送信元と受信側のリンクは、最短のパスは R2
にルーティングされ、それをブローカー B2
にルーティングします。
ブローカー B2
で b2.event-queue
からメッセージを受信するには、クライアントは受信側リンクを b2.event-queue
のソースアドレスでそのローカルルーター (R3
) に割り当てます。アドレスは b2
接頭辞に一致するため、R3
はリンクを R1
にルーティングします。これは、ルート内の次のホップから宛先にルーティングします。R1
は、リンクを R2
にルーティングし、これをブローカー B2
にルーティングします。クライアントが受信側が確立され、メッセージの受信を開始できます。
ブローカー B2
が何らかの理由で利用できない場合、ルーター R2
は b2
アドレスの宛先としてアドバタイズしません。この場合、ルーター R1
および R3
は、宛先に利用可能なルートがないことを示すエラーメッセージで、ブローカー B2
にルーティングされるべきリンク接続を拒否します。