Test Team 一直用 rfhutil 对MQ项目进行测试,而 rfhutil 每次只能对一个 Queue 进行读写操作,一旦有批量的 Queue 需要进行测试时,工作变得特别繁琐。
领导找到我们几个同事,用 java 做了一个测试 MQ 的小工具。
这个测试工具的主要工作流程为:将本地的用作测试的请求数据,发送至 Input MQ,经过MQ项目的内部处理之后,接收 Output MQ 的数据,将这个数据与本地的期望数据进行比对,如果结果为true,则表示测试通过,如果为false,则表示测试失败。另外还有一些零碎的需求,如清空 Output MQ、保存 Output MQ 的数据等。
这里主要讨论该工具中java与mq的交互方式。
1、首先将mq的jar包准备好;
2、1)使用com.ibm.mq.jar下的 MQEnvironment、MQQueueManager、MQQueue等工具类,与MQ建立连接;
2)建立连接之后,使用 MQMessage、MQGetMessageOptions、MQPutMessageOptions等进行发送和接收数据。
连接类源码如下:
import com.ibm.mq.MQEnvironment;
import com.ibm.mq.MQException;
import com.ibm.mq.MQGetMessageOptions;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
import com.ibm.mq.constants.CMQC;
public class MQConnection {
private MQQueueManager mqQueueManager;
private MQQueue defaultQueue;
//建立连接
public MQConnection(String hostName, String channel, String queueManagerName, String queue, int portNumber)
{
MQEnvironment.hostname = hostName;
MQEnvironment.channel = channel;
MQEnvironment.port = portNumber;
int openOptions = CMQC.MQOO_INPUT_AS_Q_DEF | CMQC.MQOO_OUTPUT | CMQC.MQOO_INQUIRE;
try {
mqQueueManager = new MQQueueManager(queueManagerName);
defaultQueue = mqQueueManager.accessQueue(queue, openOptions, null, queue, null);
} catch (MQException e) {
e.printStackTrace();
}
}
//发送数据至MQ
public void placeMessageOnQueue(MQMessage msg, MQPutMessageOptions options)
throws MQException {
defaultQueue.put(msg, options);
}
//从MQ中获取数据
public MQMessage getMessageFromQueue() {
MQMessage msg = new MQMessage();
try {
MQGetMessageOptions mqgetmessageoptions = new MQGetMessageOptions();
mqgetmessageoptions.waitInterval = 0x7a120;
defaultQueue.get(msg, mqgetmessageoptions);
} catch (MQException ex) {
System.out.println("An MQ error occurred : Completion code "
+ ex.completionCode + " Reason code " + ex.reasonCode);
ex.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return msg;
}
//获取MQ的深度
public int getCurrentDepth() {
try {
return defaultQueue.getCurrentDepth();
} catch (MQException e) {
e.printStackTrace();
}
return 0;
}
//使用示例:
public static void main(String args[]) {
private String inputQueueHost = "此处为有效的IP";
private String inputQueueChannel = "此处为有效的Channel信息";
private String inputQueueManager = "此处为有效的QManager名称";
private String inputQueueName = "此处为有效的QueueName";
private int inputQueuePortNumber = [此处为有效的MQ端口];
FileInputStream fileInputStream = null;
try {
MQConnection mqi = new MQConnection(inputQueueHost,
inputQueueChannel,
inputQueueManager,
inputQueueName,
inputQueuePortNumber);
String inputFilePath = "【此处为有效的文件路径】";
File inputFile = new File(inputFilePath);
fileInputStream = new FileInputStream(inputFile);
byte inputMessageContent[] = new byte[(int)inputFile.length()];
fileInputStream.read(inputMessageContent);
MQMessage message = new MQMessage();
message.setStringProperty("fileName", inputFile.getName());
message.write(inputMessageContent);
MQPutMessageOptions putMessageOptions = new MQPutMessageOptions();
mqi.placeMessageOnQueue(message, putMessageOptions);
} catch (Exception e) {
e.printStackTrace();
System.err.println(e);
} finally {
if(fileInputStream!=null) {
try {
fileInputStream.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
}
}
只可惜没有 com.ibm.mq 包的源码,无法了解具体的实现方式。
- 大小: 80.1 KB
分享到:
相关推荐
在这个项目案例中,你将接触到以下Java与IBM MQ交互的关键知识点: 1. **IBM MQ Java API**:IBM提供了JMS API的实现,允许Java开发者创建MQ连接、队列管理器、队列和通道。通过`com.ibm.mq.allclient`和`...
10. **日志与调试**:为了便于问题排查,通常需要记录与MQ交互的日志信息,包括发送的PCF命令、接收到的响应以及任何错误信息。 总的来说,Java监控WebSphere MQ 7.5涉及到了Java编程、PCF接口的使用、MQ对象的管理...
书中详细阐述了如何使用 Java 接口与 WebSphere MQ 进行交互,为开发人员提供了深入的技术指导。 #### 二、目标读者及预备知识 本书适合那些希望了解如何使用 Java 与 WebSphere MQ 交互的开发者。为了更好地理解...
6. **API与开发**:WebSphere MQ提供了丰富的编程接口,包括Java、C、C++等,开发者可以使用这些接口编写应用程序,实现与消息队列的交互。 7. **最佳实践**:为了确保系统稳定和性能,建议定期备份配置,监控队列...
在Java中,我们通常会使用IBM提供的Java Message Service (JMS) API来与WebSphere MQ交互。 1. **JMS API**:JMS是Java平台上的一个标准接口,用于访问消息中间件,如WebSphere MQ。它定义了生产者(发送消息)和...
1. **WebSphere MQ Java 类**:这是一种直接与 WebSphere MQ 交互的方式,提供了更细粒度的控制能力。开发者可以直接访问底层的消息队列管理功能,例如创建队列、发送消息等。 2. **WebSphere MQ JMS**:这是一种...
WebSphere MQ for Java 是 IBM 提供的一个用于 Java 开发者集成消息传递功能的库,它使得 Java 应用程序能够直接与 WebSphere MQ Server 交互,或者作为客户端连接到 WebSphere MQ 服务。这个框架提供了可靠的、跨...
4. **Java编程接口(JMS)**:了解Java Message Service(JMS)API,它是Java开发人员与MQ交互的标准方式,学习发送和接收消息的代码示例。 5. **MQ编程模式**:探索各种MQ编程模式,如同步和异步消息处理,以及...
3. **编程接口**:了解如何使用各种编程语言(如Java的JMS API,C的API等)与WebSphere MQ交互。 4. **管理和监控**:学习如何配置、管理和监控WebSphere MQ环境,包括性能监控、故障排查和日志分析。 5. **安全性...
这些 JAR 文件位于 `WebSphere MQ\java\lib` 目录下,是开发、配置和运行与 WebSphere MQ 集成的应用程序所必需的。 1. **WebSphere MQ 概述**: WebSphere MQ(原名 MQSeries)是 IBM 提供的一种企业级的消息队列...
- **定义**:WebSphere MQ Java 类是指一系列用于实现与 WebSphere MQ 交互的 Java API。这些类允许开发者在 Java 应用程序中实现消息队列的功能。 - **应用场景**:通常用于客户端服务器架构中,实现消息的发送与...
此外,理解JMS接口也是必要的,因为它是Java应用与WebSphere MQ交互的主要方式。 五、WebSphere MQ高可用性和灾难恢复 为保证服务连续性,WebSphere MQ支持集群、镜像队列、复制和多站点部署。这些特性可以实现负载...
最后,"webspheremq_download"标签表明可以从官方或其他资源下载WebSphere MQ的软件。安装后,需要配置相关的服务器和客户端连接参数,包括主机名、端口、通道、队列管理器名称等,以便JMS应用程序能够正确连接到MQ...
**WebSphere MQ 使用 Java** 是一份详尽的文档,主要介绍了如何利用 Java 开发语言与 IBM WebSphere MQ 消息中间件进行交互的方法。这份文档是 IBM 官方发布的,并且已经更新到了第三版(2004年1月)。它涵盖了 ...
这是核心MQ API,包含了所有与MQ交互所需的类和接口。 2. `com.ibm.mq.jmqi.jar`:JMS (Java Message Service)接口,允许Java应用程序遵循JMS规范来使用MQ。 3. `com.ibm.mq.headers.jar`:提供了处理MQ消息头的类。...
4. JMS性能提升:增强了JMS(Java消息服务)的性能,使得Java应用程序能够更有效地与消息队列交互。 5. 高可用性和弹性:WebSphere MQ在设计上考虑了系统的高可用性和弹性,提高了监听器的吞吐量,并增加了选择器的...
这些代码可能展示了如何在Java中使用JMS API来与WebSphere MQ交互。例如,创建`MessageProducer`,创建`TextMessage`,设置消息属性,然后调用`send`方法。 至于"工具"标签,可能是指WebSphere MQ管理控制台和其他...
在Java中,通常会使用WebSphere MQ Java Message Service (JMS) API来与MQ进行交互。以下是一个简单的JMS示例,展示了如何创建一个连接、发送和接收消息: ```java import com.ibm.mq.MQConnection; import ...
- 如何使用JMS API与WebSphere MQ交互,包括创建连接、会话、生产者和消费者等对象。 6. **性能调优**: - 性能监控工具和技术,如使用MQSC命令或管理控制台监控队列管理器的状态。 - 调整参数以优化消息处理...