使用 WebSphere MQ 类 for Java 而不是 JMS 有什么好处?

What is the benefit of using WebSphere MQ classes for Java rather than JMS?

我需要为 IBM MQ 编写简单的 Java 客户端。使用 WebSphere MQ 类 for Java (com.ibm.mq.jar) 而不是使用 WebSphere MQ 类 for JMS (jms.jar) 在 Java?

IBM 知识中心对此有 a short article。没有直接的 "one is better than the other" 答案。两者之间的主要区别在于它们提供的 APIs。有一个合理的论点是,您应该根据您最满意的 API 选择使用哪一个。

JMS 客户端的 MQ 类 实现了 JMS 1.1 specification 和(对于版本 8.0 或更高版本)JMS 2.0 规范。在大多数情况下,这意味着您可以遵循有关如何编写好的 JMS 应用程序的非 IBM 文档。 Web 上有很多关于 JMS 的文档,因此您可以从其他 JMS 用户的广泛支持中受益。

Java 客户端的 MQ 类 是专有的 IBM API,用于编写使用 IBM MQ 的消息传递应用程序。它为 C 提供了过程式 MQ API 的面向对象等效项,使您能够访问 IBM MQ 中可用的所有消息传递功能。使用 类 for Java 编写应用程序会让您更多地了解 MQ 细节。例如,要打开一个队列以将消息放入其中,您可以指定 CMQC.MQOO_OUTPUT 选项,这是 MQ 开发人员熟悉但 JMS 开发人员不会熟悉的选项。如果您打算学习 MQ 以及编写快速示例应用程序,类 for Java 可能更适合。

另外,由于 JMS 类 实现了一个开放标准,因此它们不适合配置或使用 MQ 的所有专有功能或配置选项。可以在 JMS 类 上设置特定于 MQ 的行为,只是不如 MQ 类 适合 Java.

如果您只需要一个快速示例客户端,MQ 会为两种应用程序样式提供示例:

  • 对于 JMS 的 MQ 类 [mq-install-root]/samp/jms/samples(在 Unix) 或 [mq-install-root]/Tools/jms/samples(在 Windows 上)。
  • 对于 MQ 类 对于 Java 样本位于 [mq-install-root]/samp/wmqjava/samples(在 Unix 上)或 [mq-install-root]/Tools/wmqjava/samples