使用 WebSphere MQ classes for JMS

WebSphere® MQ classes for Java Message Service ( WebSphere MQ classes for JMS) 是随 WebSphere MQ提供的 JMS 提供程序。 除了实现 javax.jms 包中定义的接口外, WebSphere MQ JMS 类还提供了两组 JMS API 扩展。

JMS 规范定义了一组接口,应用程序可以使用这些接口来执行消息传递操作。 javax.jms 包定义 JMS 接口, JMS 提供程序为特定消息传递产品实现这些接口。 WebSphere MQ V 7.5 当前使用 JMS 1.1 规范。 WebSphere MQ classes for JMS 是实现 WebSphere MQ的 JMS 接口的 JMS 提供程序。

JMS 规范期望 ConnectionFactory 和 Destination 对象是受管对象。 管理员在中央存储库中创建并维护受管对象, JMS 应用程序使用 Java 命名和目录接口 (JNDI) 检索这些对象。 WebSphere MQ JMS 类支持使用受管对象,管理员可以使用 WebSphere MQ JMS 管理工具或 WebSphere MQ Explorer 来创建和维护受管对象。

WebSphere MQ classes for JMS 还提供了两组 JMS API 扩展。 这些扩展的主要目标是在运行时动态创建和配置连接工厂和目标,但是这些扩展还提供了与消息传递不直接相关的功能,例如问题确定功能。
WebSphere MQ JMS 扩展
JMS WebSphere MQ 类的早期版本包含在 MQConnectionFactory, MQQueue 和 MQTopic 对象等对象中实现的扩展。 这些对象具有特定于 WebSphere MQ的属性和方法。 这些对象可以是受管对象,也可以由应用程序在运行时动态创建这些对象。 此发行版的 WebSphere MQ classes for JMS 维护这些扩展,这些扩展现在称为 WebSphere MQ JMS 扩展。 您可以不经更改继续使用任何使用这些扩展的应用程序。
IBM® JMS 扩展
此发行版的 WebSphere MQ classes for JMS 提供了一组更通用的 JMS API 扩展,这些扩展并非特定于作为消息传递系统的 WebSphere MQ 。 这些扩展称为 IBM JMS 扩展,具有以下广泛目标:
  • 在 IBM JMS 提供程序之间提供更高级别的一致性
  • 便于在两个 IBM 消息传递系统之间编写网桥应用程序
  • 为了更轻松地将应用程序从一个 IBM JMS 提供程序移植到另一个提供程序

这些扩展提供的功能类似于 Message Service Client for C/C++ 和 Message Service Client for .NET中提供的功能。

为什么要将 WebSphere MQ 类用于 JMS?

使用 WebSphere MQ classes for JMS 具有以下优点:
  • 您可以复用 JMS 技能。

    WebSphere MQ classes for JMS 是一个 JMS 提供程序,用于实现 WebSphere MQ 作为消息传递系统的 JMS 接口。 如果您的组织是 WebSphere MQ的新组织,但已具备 JMS 应用程序开发技能,那么您可能会发现使用熟悉的 JMS API 来访问 WebSphere MQ 资源 (而不是随 WebSphere MQ提供的其他某个 API) 更容易。

  • JMS 是 Java Platform, Enterprise Edition (Java EE) 的组成部分。

    JMS 是用于在 Java EE 平台上进行消息传递的自然 API。 符合 Java EE 的每个应用程序服务器都必须包含一个 JMS 提供程序。 可以在应用程序客户机, Servlet , JavaServer 页面 (JSP) ,企业 Java Bean (EJB) 和消息驱动的 Bean (MDB) 中使用 JMS。 请特别注意, Java EE 应用程序使用 MDB 异步处理消息,并且所有消息都作为 JMS 消息传递到 MDB。

  • 管理员可以在中央存储库中创建和维护 JMS 受管对象,而用于 JMS 应用程序的 WebSphere MQ 类可以使用 Java 命名和目录接口 (JNDI) 来检索这些对象。

    JMS 连接工厂和目标封装了特定于 WebSphere MQ 的信息,例如队列管理器名称,通道名称,连接选项,队列名称和主题名称。 如果连接工厂和目标存储为受管对象,那么不会将此信息硬编码到应用程序中。 因此,此安排为应用程序提供了与底层 WebSphere MQ 配置的独立程度。

  • JMS 是可提供应用程序可移植性的行业标准 API。

    JMS 应用程序可以使用 JNDI 来检索存储为受管对象的连接工厂和目标,并且仅使用 javax.jms 包中定义的接口来执行消息传递操作。 然后,应用程序完全独立于任何 JMS 提供程序 (例如, WebSphere MQ classes for JMS) ,并且可以从一个 JMS 提供程序移植到另一个 JMS 提供程序,而无需对应用程序进行任何更改。

    如果 JNDI 在特定应用程序环境中不可用,那么用于 JMS 应用程序的 WebSphere MQ 类可以使用 JMS API 的扩展在运行时动态地创建和配置连接工厂和目标。 然后,应用程序将完全独立,但与作为 JMS 提供程序的 JMS 的 WebSphere MQ 类绑定。

  • 使用 JMS 编写网桥应用程序可能更容易。

    桥接应用程序是从一个消息传递系统接收消息并将消息发送至其他消息传递系统的应用程序。 使用特定于产品的 API 和消息格式编写网桥应用程序可能很复杂。 相反,您可以使用两个 JMS 提供程序 (每个消息传递系统一个 JMS 提供程序) 来编写网桥应用程序。 然后,应用程序仅使用一个 API ,即 JMS API ,并且仅处理 JMS 消息。