複数のバスにわたるパブリッシュ/サブスクライブ・メッセージング
サービス統合では、パブリッシュ/サブスクライブ・メッセージングでトピック・スペース宛先が使用されます。各トピック・スペース宛先は、一連の「パブリッシュおよびサブスクライブ」トピックを表します。サービス統合バス・リンクを使用して複数のバスが接続されている場合、1 つのバス内のトピック・スペースでパブリッシュされたメッセージは、別のバス内のトピック・スペース上のサブスクライバーからもアクセス可能です。
特定のメッセージ (パブリケーション) のトピックは、メッセージのプロパティーです。サービス統合のトピック・スペース宛先は、特定のバス・メンバーでローカライズされません。サービス統合は、 トピック・スペース内にサブスクリプションのリストを保持し、そのリストに対してそれぞれのパブリケーションをマッチングします。新規パブリケーションがトピック・スペース内の 1 つ以上の サブスクリプションと一致する場合、サービス統合は、それぞれのサブスクライバーにパブリケーションのコピーを送信します。 必要であれば、サブスクライバーがパブリケーション・メッセージを受信する準備ができるまで、サービス統合は、パブリケーション・メッセージをキューに入れることができます。新規パブリケーションがどのサブスクリプションとも一致しない場合、サービス統合は、そのパブリケーションを廃棄します。
バス間の接続が構成済みであれば、サブスクライバーは、リモート・バスでパブリッシュされたトピックを受信できます。他のメッセージング・ネットワークに接続してそれらのネットワークとメッセージを交換するように、バスを構成することができます。これを行うには、 外部バス接続を構成する必要があります。外部バス接続は、外部バスのタイプや、メッセージング・アプリケーションがその外部バスにメッセージを送信できるかどうかなどの、 リモート・メッセージング・ネットワークに関連する情報をカプセル化します。
隣接するバス内でトピック・スペース宛先を接続するには、外部バス接続を作成するときにトピック・スペース・マッピングを構成します。マッピング内の各エントリーによって、ローカルなトピック・スペース宛先が外部バスのトピック・スペースへマッピングされます。 ローカル・バス内のトピック・スペース上のトピックに対するサブスクライバーは、外部バス内のトピック・スペースのこれらのトピックでパブリッシュされたメッセージを受信できます。 パブリッシュ/サブスクライブ・アプリケーションは、外部バスのトピック・スペースではなく、 ローカル・バス内のトピック・スペースにプロデューサーとサブスクリプションを作成します (point-to-point アプリケーションおよびキュー宛先とは異なる)。アプリケーションがパブリッシュするメッセージが正しくルーティングされるように、トピック・スペース・マッピングを構成する必要があります。

サブスクリプションが両方のバスに存在し、パブリッシャーがいずれのバスからでもパブリッシュできる場合は、2 つのバス内のすべてのパブリッシャーおよびサブスクライバーの間でパブリケーションが流れるようにするには、両方のバスにトピック・スペース・マッピングが必要です。
2 つより多いバス内のトピック・スペースを接続する場合、 複数のバスの接続方法には制約事項はありません。しかし、トピック・スペース・マッピングを使用して そのトピック・スペースが接続される方法については制約事項があります。トピック・スペース・マッピングを作成する方法についてのガイダンスは、サービス統合バス間のトピック・スペース・マッピングの構成を参照してください。
図 2 に示すように、バスのネットワークはそのトポロジー内にループを含む可能性があります。 相互接続されたトピック・スペースは、階層ツリーの形成に従う必要があります。 次にこのツリーは、図 2 で示すように、トピック・スペース・マッピングを使用して基礎となるバス・トポロジーにオーバーレイできます。図 3 に示すように、 相互接続されたいくつかのトピック・スペースが、複数のバスにわたるループを形成することは許可されません。


図 2 の正しい例では、Bus 3 がこれらのメッセージに対する適切なサブスクリプションを持っている場合、Bus 2 でパブリッシュされたメッセージは自動的に Bus 1 を介して Bus 3 に流れることを示しています。 Bus 1 内のトピック・スペースから Bus 2 内のトピック・スペースへのマッピングを作成し、また Bus 3 のトピック・スペースから Bus 1 内のトピック・スペースへ別のマッピングを作成します。
図 3 で示すように、Bus 2 のトピック・スペースから Bus 3 のトピック・スペースへのマッピングを作成した場合、ループを作成したことになるため、パブリッシュされたメッセージは無限ループを実行して、この 3 つのバスの間で送信され続ける場合があります。
メッセージに対するその他のサブスクリプションが Bus 2 に存在し、パブリッシャーが Bus 3 にも接続されている場合は、図 4 で示すように、メッセージがシステム内のすべてのサブスクリプションに流れるように、反対方向のトピック・スペース・マッピングが必要です。
