为MQSeries编写Java客户端的最低要求是什么?

时间:2009-10-27 06:27:05

标签: java windows client ibm-mq

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

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

我在很多年前就完成了这项工作并拥有所有示例代码等。

我记得需要的是三个jar文件:

  • com.ibm.mq.iiop.jar
  • com.ibm.mq.jar
  • connector.jar

我一直在做一些阅读,很多人都在谈论一个属性文件,但我从过去的经历中无法回忆这一点。

等我的问题:

我的系统在开发,测试和最终部署简单的MQSeries客户端时需要的绝对最小值是什么?

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

注意:此问题与this一个问题有关但不一样。

4 个答案:

答案 0 :(得分:3)

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

为什么?完整安装包括诊断工具,支持代码,NLS支持以及收集所有Must Gather信息以打开故障单的功能。如果您抓取的只是一些jar文件,则无法获得其他功能,因此如果出现问题,则不会提供供应商支持。

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

基础Java和JMS的jar文件和CLASSPATH设置在Using Java手册中提供。

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

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

答案 1 :(得分:1)

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

  • com.ibm.mq.iiop.jar
  • com.ibm.mq.jar
  • connector.jar
  • mqji.properties

除非您能够访问这些内容,否则我唯一可以解决的问题是从IBM下载并安装MQSeries的FULL试用版:

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

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

安装完成后,您将在安装所在的java / lib文件夹中找到所需的所有jar文件。这个版本的罐子与我上面提到的罐子不同,我怀疑是因为版本差异。

安装时未安装属性文件(可能新版本不需要此文件),但可以找到here

答案 2 :(得分: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

代码取自this SO answer

答案 3 :(得分:0)

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

转到这里,他们在java http://www304.ibm.com/jct01005c/isv/tech/sampmq.html

中有很多例子

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

在任何情况下,当您从IBM的网站(trial lic)下载MQseries服务器时,该服务器应该包含您需要的jar。

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