如何对总线目标和 IBM MQ 队列进行寻址
要了解如何从 IBM MQ 访问服务集成总线目标以及如何从服务集成总线访问 IBM MQ 队列,很重要的一点是了解控制如何对这两个资源进行寻址的不同约定。
- 队列管理器名称
- 队列名称
- 总线名称
- 目标名称(标识)
在 IBM MQ 中,队列管理器名称和队列名称都存在最大长度为 48 个字符的限制,并且被限制为使用特定字符。有关更多信息,请参阅IBM MQ 命名限制。服务集成总线等价项没有这些限制,所以(例如),如果消息来自 IBM MQ 应用程序并且被发送至名称长度超过 48 个字符的总线目标,那么这些消息必须具有使用较短名称(在 IBM MQ 中使用)对较长名称(在服务集成总线中使用)寻址的方法。服务集成总线使用别名目标在短名称和长名称之间映射。同样,还可以使用别名并通过使用长名称(超过 48 个字符)将消息从 WebSphere Application Server 应用程序发送至 IBM MQ 队列。有关别名目的地的更多信息,请参阅外部目标和别名目标。
IBM MQ 队列的服务集成 queue@queueManager 注释
服务集成通过 IBM MQ 链路发送消息时,它必须知道对应于网关队列管理器或队列共享组的外部总线;如果发送队列是在另一队列管理器或队列共享组(而不是网关)中定义的,那么服务集成必须知道发送队列的位置以便它可在 MQXQH RemoteQMgrName 字段中保存正确的名称。实现此目标的一种方法是定义两个外部总线:一个间接连接的总线(其中定义了队列)和一个直接连接的总线(网关)。
下图显示此方法的示例:在图中,消息的目标队列是队列管理器 QM2 中的 Q2。本地总线中的服务集成配置将 QM2 定义为间接连接的外部总线,并将 QM1 定义为直接连接的中间总线。它将 Q2 定义为外部目标,其总线名称为 QM2,目标名称(标识)为 Q2。本地总线的服务集成配置不包括有关 QM1 与 QM2 之间的连接的任何信息。

通过此方式可以很好地访问外部 IBM MQ 队列。但是,当有大量队列管理器或队列共享组通过一个网关连接至服务集成总线时,您可能会发现将每个队列管理器或队列共享组都定义为间接连接的外部总线会不方便。因此服务集成支持对用 at 符号 (@) 连接队列名称和队列管理器名称的 IBM MQ 队列使用以下特殊目标名称格式:queue@queueManager。通过使用此特殊格式,您不必对服务集成定义单独的间接连接的外部总线,原因是该名称包含在服务集成目标名称中。
下图显示此方法的示例:在图中,消息的目标队列是队列管理器 QM2 中的 Q2。本地总线中的服务集成配置不会将 QM2 定义为外部总线。它将 Q2 定义为外部目标,其总线名称为 QM1,目标名称(标识)为 Q2@QM2。本地总线的服务集成配置不包括有关 QM1 与 QM2 之间的连接的任何信息。

自动映射 JMS 消息的 JMSReplyTo 字段
在 JMS API 中有两个字段用于共享有关发送消息的目标 (JMSDestination) 和应该发送应答的目标 (JMSReplyTo) 的信息。JMS 消息的 JMSReplyTo 字段(从服务集成总线传递至 IBM MQ 或从 IBM MQ 传递至到服务集成总线)会自动进行映射,以使 IBM MQ 中的使用应用程序可应答原始 WebSphere Application Server 应用程序。