Java连接IBM MQ

package com.hometest.IBMMqTest;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

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.MQConstants;

public class TestMQ {

private MQQueueManager qmanager = null;
private MQQueue queue = null;
private static final String MQ_HOST ="";
private static final Integer MQ_PORT =1414;
private static final String MQ_CHANNEL ="";
private static final String MQ_QUEUEMANAGER_NAME = "MQ_APP";
private static final String MQ_QUEUE_NAME = "Queue1";

public static void main(String[] args) {
// TODO Auto-generated method stub
TestMQ mq = new TestMQ();

try {
mq.send("hello everyone");
// mq.send("WHAT");
System.out.println(mq.receive());
} catch (MQException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// mq.receiveAll();
// Integer depth = mq.getQueueDepth();
// System.out.println("The current depth of queue is " + depth);
mq.close();
}

public TestMQ() {
try {
MQEnvironment.hostname = MQ_HOST;
MQEnvironment.port = MQ_PORT;
MQEnvironment.channel = MQ_CHANNEL;
qmanager = new MQQueueManager(MQ_QUEUEMANAGER_NAME);
int openOptions = MQConstants.MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_INQUIRE | MQConstants.MQOO_OUTPUT;
queue = qmanager.accessQueue(MQ_QUEUE_NAME, openOptions);
} catch (MQException e) {
e.printStackTrace();
}
}

public Integer getQueueDepth() {
Integer depth = 0;
try {
if (queue != null && queue.isOpen()) {
depth = queue.getCurrentDepth();
}
} catch (MQException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return depth;
}

public void close() {
if (queue != null && queue.isOpen()) {
try {
queue.close();
} catch (MQException e) {
e.printStackTrace();
}
}
if (qmanager != null && qmanager.isConnected()) {
try {
qmanager.disconnect();
} catch (MQException e) {
e.printStackTrace();
}
}
}

public void send(String msg) throws MQException {
try {

MQPutMessageOptions mqPutMessageOptions = new MQPutMessageOptions();
MQMessage mqMessage = new MQMessage();
mqMessage.write(msg.getBytes("utf-8"));
queue.put(mqMessage, mqPutMessageOptions);
System.out.println("Sent a message:" + msg);

} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public String receive() throws MQException{
MQMessage mqMsg = new MQMessage();
MQGetMessageOptions mqGetMessageOptions = new MQGetMessageOptions();
try {

queue.get(mqMsg, mqGetMessageOptions);
int len = mqMsg.getDataLength();
byte[] message = new byte[len];
mqMsg.readFully(message, 0, len);
String str = new String(message);
System.out.println("Received a message:" + str);
return str;
} catch (MQException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}

}

public void receiveAll() {
try {
int depth = queue.getCurrentDepth();
System.out.println("The current depth of queue is " + depth);
System.out.println("Now receive all messages....");
while(depth-- > 0){
MQMessage mqMsg = new MQMessage();
MQGetMessageOptions mqGetMessageOptions = new MQGetMessageOptions();
queue.get(mqMsg, mqGetMessageOptions);
int len = mqMsg.getDataLength();
byte[] message = new byte[len];
mqMsg.readFully(message, 0, len);
System.out.println(new String(message));

}
} catch (MQException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

时间: 2024-08-04 03:37:13

Java连接IBM MQ的相关文章

连接IBM MQ原因码报2035的错误解决办法

我们的系统使用了ibm mq,用户用来向国家局上报文件和接收文件,前几天用户说上报一直不成功.由于 开发这块程序的人已经辞职了,我觉定在我的机器部署一套,研究一下.我的思路: 在我的机器上安装mq,建立两个队列,一个用来接收,一个用来发送;在另外一台机器上,发布应用程序,通 过java client向我的机器的队列发送消息和接收消息. mq安装成功,队列管理器.队列.通道也都建起来了,用mq自带的api检测程序检测也成功了. 接下来,在另外一台机器上通过程序发送消息,结果就是不行,总是报原因码是

delphi客户端连接IBM MQ

项目需要:his-lis之前交互以表/视图BS方式完成交互,现需要更换成用IBM MQ消息平台的方式完成交互. 修改后的交互: 部署测试环境: Windows2003+Windows xp+IBM MQ 7.0.5 具体实现步骤: 部署MQ客户端,delphi连接IBM MQ需要MQ客户端支持: 部署MQ服务端: delphi客户端编写: 窗体源码: object Form1: TForm1   Left = 744   Top = 189   BorderIcons = [biSystemMe

Java连接MQ的实例, 测试类

package cjf.mq.mqclient; import com.ibm.mq.MQC; 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; impo

使用Loadrunner对IBM MQ进行性能测试

一.概述 使用Loadrunner对IBM MQ进行性能测试,需要用到java vuser以及java编码知识.此次先介绍什么是IBM MQ,然后java vuser的使用与配置细节,最后介绍IBM MQ的测试脚本. 二.IBM MQ介绍 IBM MQ(IBM Message Queue)是IBM的一款商业消息中间产品,适用于分布式计算环境或异构系统之中.消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走. 通过消息队列应用程序可独立地

IBM MQ 集成CXF 发送JMS 消息

1.修改wsdl 协议类型为 jms 替换 <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 为 <soap:binding style="document" transport="http://cxf.apache.org/transports/jms"/> 2.根据wsdl生成服务端代码

IBM MQ 学习

1 import java.io.IOException; 2 import java.util.HashMap; 3 import java.util.Map; 4 5 import com.ibm.mq.MQC; 6 import com.ibm.mq.MQEnvironment; 7 import com.ibm.mq.MQException; 8 import com.ibm.mq.MQGetMessageOptions; 9 import com.ibm.mq.MQMessage; 1

运维文档分享(2):IBM MQ运维使用手册

前言:最近整理电脑,发现之前写的几篇生产上的运维测试文档,特来分享. 一.测试环境说明 本次测试linux端和windows端主要参数配置如下:Linux:操作系统版本:SUSE Linux Enterprise Server 10 SP4    32bitMQ版本:7.1.0.3Ip地址:192.168.0.151 Windows:操作系统版本:Windows 7旗舰版SP1 32bitMQ版本:7.1.0.3Ip地址:192.168.0.111 二.MQ简介1)消息中间件概述    消息队列

软件-MQ-MQ:IBM MQ

ylbtech-软件-MQ-MQ:MQ(IBM MQ) MQ传递主干,在世界屡获殊荣. 它帮您搭建企业服务总线(ESB)的基础传输层.IBM WebSphere MQ为SOA提供可靠的消息传递.它为经过验证的消息传递主干, 全方位. 多用途的数据传输, 并帮助您搭建企业服务总线的传输基础设施. 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过

IBM MQ学习过程问题汇总

IBM MQ使用过程问题汇总----------------------------------------------1. 客户端发送消息时出现2035问题的解决过程####环境:win7系统administrator用户,WebSphereMQ8.0####测试:执行命令"amqsputc.exe Q1"a---按照教程添加"服务器连接"通道时为MCA指定用户名.无效:b---执行runmqsc命令,输入alter qmgr chlauth(disabled)禁