第12章 メッセージの迂回およびメッセージフローの分割
AMQ Broker では、迂回 と呼ばれるオブジェクトを設定できます。これにより、クライアントアプリケーションロジックを変更せずにメッセージをあるアドレスから別のアドレスに透過的に迂回できます。迂回を設定してメッセージの コピー を指定された転送アドレスに転送し、メッセージフローを効果的に分割することもできます。
12.1. メッセージの迂回の仕組み
迂回により、クライアントアプリケーションロジックを変更せずに、あるアドレスにルーティングされたメッセージを他のアドレスに透過的に迂回できます。ブローカーサーバーの迂回のセットをメッセージのルーティングテーブルの種類と見なすことができます。
迂回は 排他的 にすることができます。つまり、メッセージは元のアドレスに入りずに指定されたフォワードアドレスに迂回されます。
迂回は 排他的 ではない場合もあります。つまり、ブローカーはメッセージのコピーを指定された転送アドレスに送信する一方で、メッセージを元のアドレスに引き続き送信します。そのため、メッセージフローを分割するのに排他的でない迂回を使用できます。たとえば、注文キューに送信された全順序を個別に監視する場合は、メッセージフローを分割できます。
単一のアドレスに対して複数の迂回を設定できます。アドレスに排他的な迂回と非排他的な迂回の両方が設定されている場合、ブローカーは特別な迂回を最初に処理します。特定のメッセージがすでに特別な迂回によって迂回されている場合、ブローカーはそのメッセージの特別でない迂回を処理しません。この場合、メッセージは元のアドレスには決して送信されません。
ブローカーがメッセージを迂回すると、ブローカーは新しいメッセージ ID を割り当て、メッセージアドレスを新しい転送アドレスに設定します。元のメッセージ ID およびアドレスの値は、_AMQ_ORIG_ADDRESS
( 文字列タイプ ) および _AMQ_ORIG_MESSAGE_ID
(long タイプ ) メッセージプロパティーから取得できます。コア API を使用している場合は、Message.HDR_ORIGINAL_ADDRESS
プロパティーおよび Message.HDR_ORIG_MESSAGE_ID
プロパティーを使用します。
同じブローカーサーバーのアドレスにのみメッセージを迂回できます。別のサーバーのアドレスに転送する場合、一般的な解決策は、まずメッセージをローカルのストアアンドフォワードキューに転送することです。次に、そのキューから消費し、メッセージを別のブローカーのアドレスに転送するブリッジを設定します。迂回とブリッジを組み合わせると、地理的に分散したブローカーサーバー間のルーティング接続の分散ネットワークを作成できます。これにより、グローバルメッセージングメッシュを作成できます。