IBM MQ 从接收通道获取数据
Posted linxixinxiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IBM MQ 从接收通道获取数据相关的知识,希望对你有一定的参考价值。
1、IBM MQ服务端配置(模拟服务端)
a)打开“WebSphere MQ资源管理器”,新建队列管理器,名称为fwd_dlgl_name(服务器端mq队列管理器名称),其余采用默认设置;
b)在fwd_dlgl_name(服务器端mq队列管理器名称) 队列管理器中创建本地队列,名称为fwd_bddl_name(服务器端mq本地队列名称);
c)创建传输队列,名称为fwd_csdl_name(服务器端mq本地传输队列名称)(新建时选择“本地队列”,将“用法”设置为“传输”);
d)创建远程队列定义,名称为fwd_ycdl_name(服务器端mq远程队列名称),指定远程队列名称为khd_bddl_name(客户端端mq本地队列名称),远程队列管理器名称为khd_dlgl_name(客户端mq队列管理器名称),传输队列名称为fwd_csdl_name(服务器端mq本地传输队列名称);
e)创建发送方通道,名称为yc_kh(服务端发送到客户端的通道名称),传输协议为TCP/IP,连接名称为客户端ip地址(客户端mq的端口),传输队列为fwd_csdl_name(服务器端mq本地传输队列名称);
f)创建服务器连接通道,名称为DC.SVRCONN,采用默认设置(该通道主要给后面的测试程序使用)。
g)服务端发送消息
找到 远程队列定义 fwd_ycdl_name,右键,如下图
选择“放入测试消息...”,如下图:
在 消息数据 中录入测试数据 ,点击 “放入消息”按钮 发送消息到客户端。
2、IBM MQ 客户端配置
a)打开“WebSphere MQ资源管理器”,新建队列管理器,名称为khd_dlgl_name(客户端mq队列管理器名称),其余采用默认设置;
b)在khd_dlgl_name(客户端mq队列管理器名称)队列管理器中创建本地队列,名称为khd_bddl_name(客户端端mq本地队列名称);
c)创建接受方通道,名称为yc_kh(必须与服务端发送到客户端的通道名称相同),采用默认设置;
d)创建服务器连接通道,名称为DC.SVRCONN,采用默认设置。
e)客户端读取消息代码
import com.ibm.mq.MQC; import com.ibm.mq.MQEnvironment; import com.ibm.mq.MQMessage; import com.ibm.mq.MQQueue; import com.ibm.mq.MQQueueManager; public class IBMQRead /** 变量 */ private final static int OPENOPTIONS = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT | MQC.MQOO_INQUIRE; static MQEnvironment.hostname = "192.168.0.158"; MQEnvironment.channel = "DC.SVRCONN"; MQEnvironment.port = 1414; MQEnvironment.CCSID = 1381; public static void main(String[] args) try //初始化 MQQueueManager queueManager = new MQQueueManager("khd_dlgl_name");//队列管理器名称 // 队列名称 MQQueue mqQueue = queueManager.accessQueue("khd_bddl_name", OPENOPTIONS, null, null, null); //获取管道深度 int currentDepth = mqQueue.getCurrentDepth(); //进行遍历管道中的所有数据内容 while(currentDepth-- > 0) // 要读的队列的消息 MQMessage mqMessage = new MQMessage(); mqQueue.get(mqMessage); int dataLength = mqMessage.getDataLength(); //得到字符串 String readXml = mqMessage.readStringOfByteLength(dataLength); System.out.println(readXml); catch (Exception e) e.printStackTrace();
IBM MQ所需的 jar包
<!-- IBMMQ --> <dependency> <groupId>com.ibm.mq</groupId> <artifactId>jmqi</artifactId> <version>7.5</version> </dependency> <dependency> <groupId>com.ibm.mq</groupId> <artifactId>headers</artifactId> <version>7.5</version> </dependency> <dependency> <groupId>com.ibm</groupId> <artifactId>mq</artifactId> <version>7.5</version> </dependency> <dependency> <groupId>com.ibm.mq</groupId> <artifactId>jms</artifactId> <version>7.5</version> </dependency> <dependency> <groupId>com.ibm.mq</groupId> <artifactId>dhbcore</artifactId> <version>7.5</version> </dependency> <dependency> <groupId>com.ibm</groupId> <artifactId>mqjms</artifactId> <version>7.5</version> </dependency> <dependency> <groupId>com.ibm.mq</groupId> <artifactId>connector</artifactId> <version>7.5</version> </dependency> <dependency> <groupId>com.ibm.mq</groupId> <artifactId>commonservices</artifactId> <version>7.5</version> </dependency>
以上是关于IBM MQ 从接收通道获取数据的主要内容,如果未能解决你的问题,请参考以下文章