我需要用Java编写一个简单的MQSeries客户端。
客户端只需连接到队列并提取下一条消息。
我在很多年前就完成了这项工作并拥有所有示例代码等。
我记得需要的是三个jar文件:
我一直在做一些阅读,很多人都在谈论一个属性文件,但我从过去的经历中无法回忆这一点。
等我的问题:
我的系统在开发,测试和最终部署简单的MQSeries客户端时需要的绝对最小值是什么?
我在哪里可以找到(下载)这些东西?
注意:此问题与this一个问题有关但不一样。
答案 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)
好吧,看起来你需要我在问题中提到的三个罐子以及一个属性文件。
除非您能够访问这些内容,否则我唯一可以解决的问题是从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。