2

我需要用 Java 编写一个简单的 MQSeries 客户端。

客户端只需连接到队列并提取下一条消息。

几年前我已经这样做了,并且拥有所有示例代码等。

我只记得需要三个 jar 文件:

  • com.ibm.mq.iiop.jar
  • com.ibm.mq.jar
  • 连接器.jar

我一直在阅读,很多人都在谈论属性文件,但从我过去的经验中我不记得这一点。

等等我的问题:

在我的系统上开发、测试和最终部署一个简单的 MQSeries 客户端所需的绝对最低要求是多少?

我在哪里可以找到(下载)这些东西?

注意:此问题与此问题相关但不同。

4

4 回答 4

3

问题的答案取决于您是否要将生成的代码投入生产。您可以获取一些 jar 文件并将它们包含在 CLASSPATH 中并使其工作。事实上,在 v7 中重新打包后,jar 的数量已经减少。但是,如果没有完整的客户端安装,IBM 不支持它。

这是为什么?完整安装包括诊断工具、支持代码、NLS 支持以及收集所有必须收集信息以打开故障单的能力。如果您只获取一些 jar 文件,您将无法获得附加功能,因此如果出现问题,您将无法获得供应商支持。

WMQ v7 客户端安装作为SupportPac MQC7提供,可免费下载。

基本 Java 和 JMS 的 jar 文件和 CLASSPATH 设置在使用 Java手册中提供。

使用 v7 客户端,即使在 v6 服务器上。它是向后兼容的。在 v7.0 中,Java/JMS 已全部重写,您只需要手册中列出的 jars。

另外,有人提到了 etclient jar。那是扩展交易客户端,请注意它会产生 QMgr 的全部许可成本。只有在执行两阶段提交(XA 与 WMQ 和同一工作单元中的另一个资源管理器)并且不使用 WebSphere App Server 或 Message Broker 时才需要它。例如,您想使用 JBoss、MQ 和数据库进行 TPC,您需要 etclient jar 文件并支付完整的 WMQ 许可证。如果您不进行 XA 事务,则不需要它。

于 2011-01-30T17:36:19.440 回答
1

这是另一种方式...

使用三个jar文件:

com.ibm.mq.jar
com.ibm.mqetclient.jar
com.ibm.mqjms.jar

这是一个将读取 MQ 消息的代码示例 -

import com.ibm.mq.*;            // Include the WebSphere MQ classes for Java package

public class MQSample
{
  private String qManager = "your_Q_manager";  // define name of queue
                                               // manager to connect to.
  private MQQueueManager qMgr;                 // define a queue manager
                                               // object
  public static void main(String args[]) {
     new MQSample();
  }

  public MQSample() {
   try {

      // Create a connection to the queue manager
      qMgr = new MQQueueManager(qManager);

      // Set up the options on the queue we wish to open...
      // Note. All WebSphere MQ Options are prefixed with MQC in Java.
      int openOptions = MQC.MQOO_INPUT_AS_Q_DEF |
                        MQC.MQOO_OUTPUT ;

      // Now specify the queue that we wish to open,
      // and the open options...
      MQQueue system_default_local_queue =
              qMgr.accessQueue("SYSTEM.DEFAULT.LOCAL.QUEUE",
                               openOptions);

      // Define a WebSphere MQ message buffer to receive the message into..
      MQMessage retrievedMessage = new MQMessage();

      // Set the get message options...
      MQGetMessageOptions gmo = new MQGetMessageOptions(); // accept the defaults
                                                           // same as  MQGMO_DEFAULT
      // get the message off the queue...
      system_default_local_queue.get(retrievedMessage, gmo);

      // And prove we have the message by displaying the UTF message text
      String msgText = retrievedMessage.readUTF();
      System.out.println("The message is: " + msgText);
      // Close the queue...
      system_default_local_queue.close();
      // Disconnect from the queue manager

      qMgr.disconnect();
    }
      // If an error has occurred in the above, try to identify what went wrong
      // Was it a WebSphere MQ error?
    catch (MQException ex)
    {
      System.out.println("A WebSphere MQ error occurred : Completion code " +
                         ex.completionCode + " Reason code " + ex.reasonCode);
    }
      // Was it a Java buffer space error?
    catch (java.io.IOException ex)
    {
      System.out.println("An error occurred whilst writing to the message buffer: " + ex);
    }
  }
} // end of sample

取自这个 SO answer的代码。

于 2009-10-27T15:07:11.847 回答
1

好的,看起来您需要我在问题中提到的三个罐子以及一个属性文件。

  • com.ibm.mq.iiop.jar
  • com.ibm.mq.jar
  • 连接器.jar
  • mqji.properties

除非您已经可以访问这些东西,否则我想得到它们的唯一方法是从 IBM 下载并安装 MQSeries 的完整试用版:

http://www.ibm.com/developerworks/downloads/ws/wmq/

如果该链接随着时间的推移而失效,您也可以通过访问www.ibm.com然后从“支持和下载”->“下载”->“试用和演示”中的菜单找到它,然后选择“WebSphere MQ”从列表中。

安装完成后,您需要的所有 jar 文件都在安装所在的 java/lib 文件夹中。这个版本的jars和我上面提到的jars不同,我怀疑是因为版本不同。

属性文件未随安装一起安装(可能新版本不需要此文件),但可以在此处找到。

于 2009-10-27T09:22:53.137 回答
0

自从我这样做以来已经有一段时间了,IBM 提供了直接使用 mqseries 的 java api 和 JMS api,它是它的一个包装器。

去这里,他们在java中有很多例子http://www304.ibm.com/jct01005c/isv/tech/sampmq.html

为了进行测试,您需要下载并设置一个 MQseries 服务器,或者他们可能会在真实服务器上为您设置一个测试队列。

无论如何,当您从 IBM 的网站(试用许可证)下载 MQseries 服务器时,应该包含您需要的 jar。

我会强烈研究 MQSeries 的 JMS api,这样您就可以远离实际使用 mqseries api。

于 2009-10-27T08:00:16.203 回答