JMS 目标与服务集成目标之间的关系
大多数 WebSphere® Application Server 应用程序使用 JMS API 来访问服务集成总线提供的服务。JMS 定义 JMS 目标,这些目标是 JMS 应用程序将消息发送至及从中接收消息的 Java 对象。JMS 目标的属性包括消息传递提供程序使用的目标的地址。对于服务集成消息传递提供程序,此地址是服务集成目标名称(队列名或主题空间名称)及总线名称。这样一来,JMS 目标就可标识服务集成总线目标。
通常,JMS 应用程序通过对目标 JNDI 名称进行 JNDI 查询来获取 JMS 目标。但是,JMS 应用程序还可以通过其他方式(例如,通过 JMS 消息的 JMSReplyTo 属性)来获取 JMS 目标。
JMS 目标 - 队列和主题
- JMS 队列目标
- 用于点到点消息传递,生产应用程序(生产者)将消息发送至队列。消息传递提供程序仅存储每个消息的一个副本,直到消费应用程序(使用者)接收到该消息。如果有多个使用者,那么只有一个使用者会接收到该消息的副本;如果没有使用者,那么该消息会排队。
在服务集成中,JMS 队列目标对象具有队列名称属性和总线名称属性(它还具有其他属性)。
- JMS 主题目标
- 用于“发布/预订”消息传递,生产应用程序(发布者)将消息(发布)发送至主题。消息传递提供程序将每个发布的副本传送至每个消费应用程序(订户)。如果没有订户,那么服务集成会废弃该发布。
与点到点消息传递的另一差别是订户可通过在主题名称中包括通配符来使用多个类似主题的消息。
在服务集成中,JMS 主题目标对象具有主题名称、主题空间名称和总线名称属性(它还具有其他属性)。
JMS 目标 - 与服务集成目标之间的关系
在服务集成中,JMS 目标标识服务集成目标。其队列名称或主题空间名称属性是服务集成目标的名称。其总线名称属性是其中包含目标的服务集成总线的名称。
当您定义 JMS 目标时,可以省略总线名称属性。如果您省略此属性,那么 JMS 目标将标识本地总线(即,JMS 应用程序连接至的总线)中的服务集成目标。这可能在只有一条服务集成总线或者所有总线都包含一个同名的目标时很方便。
- 服务集成队列目标
- 队列目标表示消息队列,并用于点到点消息传递。服务集成队列目标位于特定总线成员(应用程序服务器或应用程序服务器集群)中。生产者将消息发送至队列目标时,服务集成总线会将该消息传送至该总线成员中的消息传递引擎。消息传递引擎随后将消息传送至使用者。必要时,消息传递引擎会对消息进行排队直到使用者准备好接收该消息。
通常,JMS 队列目标标识服务集成队列目标;即,其总线名称属性与本地总线名称相匹配,并且其队列名称属性与本地总线中的服务集成队列目标名称相匹配。
- 服务集成主题空间目标
- 主题空间目标表示“发布和预订”主题集,并用于发布/预订消息传递。 特定消息(发布)的主题是该消息的一个属性。 服务集成主题空间目标不在特定总线成员中。服务集成将预订列表保留在主题空间中并针对该列表匹配每个发布。新发布与主题空间中的一个或多个预订匹配时,服务集成将该发布的副本传送至每个订户。必要时,服务集成可对发布消息进行排队直到订户准备好接收该消息。如果新发布未与任何预订匹配,那么服务集成会废弃该发布。
通常,JMS 主题目标标识服务集成主题空间目标;即,其总线名称属性与本地总线名称相匹配;其主题空间名称属性与本地总线中的服务集成主题空间目标名称相匹配。当 JSM 应用程序将消息发送至 JMS 主题目标时,服务集成将消息的目标主题属性设置为 JMS 主题目标的主题名称属性,然后将消息发送至服务集成主题空间目标。
- 服务集成外部目标
- 外部目标表示在另一总线(外部总线)中定义的目标。可以将外部目标用于点到点消息传递。如果您需要针对外部总线上的个别目标覆盖安全性设置或消息传递缺省值,那么可以使用外部目标。 外部总线可以是另一服务集成总线或 IBM MQ 网络(即,一个或多个相互连接的 IBM MQ 队列管理器或队列共享组)。 生产者将消息发送至外部目标时,服务集成会将该消息传送至外部总线。然后外部总线负责适当地根据其目标定义对消息排队。
JMS 目标可标识服务集成外部目标;即,其总线名称和队列或主题空间名称属性可与外部目标的外部总线名称和队列或主题空间名称相匹配。但是,这并非总是必需的。如果不存在具有相匹配的外部总线名称和相匹配的目标(队列或主题空间)名称的服务集成外部目标,那么服务集成会将消息发送至所指定的外部总线。