在多个总线中进行发布/预订消息传递
在服务集成中,发布/预订消息传递使用主题空间目标,每个主题空间目标表示一组“发布和预订”主题。当多条总线使用服务集成总线链路相连时,在一条总线的主题空间中发布的消息可供另一条总线中的主题空间中的订户访问。
特定消息(发布)的主题是该消息的一个属性。服务集成主题空间目标不在特定总线成员中。服务集成将预订列表保留在主题空间中并针对该列表匹配每个发布。新发布与主题空间中的一个或多个预订相匹配时,服务集成将该发布的副本传送至每个订户;必要时,服务集成可对发布消息进行排队直到订户准备好接收该消息。新发布未与任何预订匹配时,服务集成会废弃该发布。
只要配置了总线之间的连接,订户就可以接收发布在远程总线中的主题。可配置总线以连接至其他消息传递网络并与这些网络交换消息。为此,必须配置外部总线连接。外部总线连接包含与远程消息传递网络相关的信息,例如,外部总线的类型以及是否允许消息传递应用程序将消息发送至外部总线。
要将相邻总线中的主题空间目标相连,请在创建外部总线连接时配置主题空间映射。该映射中的每个条目都将本地主题空间目标映射至外部总线中的主题空间。然后,本地总线中主题空间的任何主题订户都可以接收外部总线的主题空间中对那些主题发布的消息。发布/预订应用程序将在它们的本地总线(而不是外部总线)中创建主题空间的生产者和预订(与点到点应用程序和队列目标不同)。必须配置主题空间映射,以便正确传递应用程序所发布的消息。

如果两条总线中都存在预订,并且发布者可以从任一总线进行发布,那么那么两条总线中都需要主题空间映射,以便使发布能够在这两条总线中的所有发布者和订户之间传递。
连接两个以上总线中的主题空间时,对多个总线的连接方式没有限制。对使用主题空间映射来连接主题空间的方式存在限制。有关如何创建主题空间映射的指南,请参阅配置服务集成总线之间的主题空间映射。
总线网络的拓扑可以包含循环,如图 2 所示。相互连接的主题空间必须遵循分层树格式。通过使用主题空间映射,此树可以基于底层总线拓扑,如图 2 中所示。不允许一组相互连接的主题空间构成如图 3 那样跨多个总线的循环。


图 2 中的正确示例表明,对于总线 2 中发布的消息,如果总线 3 包含那些消息的合适预订,那么这些消息将通过总线 1 自动传递到总线 3。您创建从总线 1 中主题空间到总线 2 中主题空间的映射,并创建另一个从总线 3 中主题空间到总线 1 中主题空间的映射。
如果您还创建了从总线 2 中的主题空间到总线 3 中的主题空间的映射(如图 3 中所示),那么您将创建一个回路,已发布的消息可能会进入无限循环状态,并在三条总线之间不停传递。
如果总线 2 中存在消息的其他预订,并且发布者还连接至总线 3,那么主题空间映射需要采用相反方向,以允许消息传递到系统中的所有预订,如图 4中所示。
