WebSphere MQ Java 应用开发简单实例(上篇:客户端模式开发)(client mode和binding mode)

这篇博客介绍了IBM MQ Java应用开发,重点是客户端模式(client mode)。内容包括IBM MQ Java类库的使用,如MQ classes for Java,以及客户端模式与绑定模式的区别。文章详细阐述了开发环境的准备,特别是Java 7以上运行时环境的必要性,并以在本地读写队列为例,展示了如何使用TCP/IP进行通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1-背景知识

IBM MQ支持多种语言开发,本文主要是考虑Java应用开发,MQ提供了相关的Java类库,可以很方便集成到Java应用中。
IBM MQ Java相关类库允许Java应用直接与队列管理器交互,或者连接MQ服务器和客户端进行交互。
类库主要有两个,一个是MQ classes for Java,另一个是支持JMS标准的MQ classes for JMS。

由于是示例学习,本文主要尝试利用MQ classes for Java建立MQ简单应用,从MQ 8.0开始,类库是基于Java 7建立,因此需要Java 7以上运行时环境。

当然官方推荐使用JMS,因为最新的功能例如异步消费、自动重连等功能,都只在JMS中支持

开发有两种通信模式连接MQ:
客户端模式(client mode):应用作为客户端使用TCP/IP连接MQ服务器,应用可以部署在相同机器上或者不同机器上;
绑定模式(binding mode):通过JNI(Java Native Interface)直接连接MQ服务器,避免网络通信,性能更佳,必须和MQ服务器在相同机器上;

2-开发环境准备

2.1 开发环境

VMware Workstation 11.1.4 
SuSE Linux Server x64 SP4 虚拟机
JDK 8.0
MQ 8.0安装包

2.2 安装

安装好虚拟机,SuSE Linux SP4,接下来安装MQ本地开发环境

**安装MQ相关组件**
# tar -xvf WSMQ_8.0_IFR_TRIAL_LNX_ON_X86_64_.tar.gz
# cd server

安装MQ运行时组件:
# rpm -ivh MQSeriesRuntime-8.0.0-2.x86_64.rpm

安装服务器组件:
# rpm -ivh MQSeriesServer-8.0.0-2.x86_64.rpm

安装MQ Java库:这里面提供MQ Java开发相关的类库
# rpm -ivh MQSeriesJava-8.0.0-2.x86_64.rpm 

安装MQ JRE:java运行时用来运行MQ Java应用
# rpm -ivh MQSeriesJRE-8.0.0-2.x86_64.rpm 


**安装JDK**
下载JDK压缩包,放入/home目录下
# cd /home
# tar xvfz jdk-8u102-linux-x64.tar.gz 
# cd jdk1.8.0_102
# ./java -version 

出错:
Error occurred during initialization of VM
Could not allocate metaspace: 1073741824 bytes
很明显内存空间不够导致,原虚拟机只有768MB内存,增加到2GB,然后重启虚拟机

# reboot
# cd /home/jdk1.8.0_102/bin
# ./java -version
# ./javac 
提示安装成功


**配置MQ服务器**
# useradd mquser1 -u 3001
# passwd mquser1  设置密码为mqtest2016
# su - mqm
~ cd /opt/mqm/bin
设置mq环境变量
~ source setmqenv -s

创建队列管理器JAVA.QUEUE.MANAGER.1,并启动
~ crtmqm JAVA.QUEUE.MANAGER.1
~ strmqm JAVA.QUEUE.MANAGER.1
~ dspmq  查看所有队列管理器运行状态

启动脚本执行器,进行设置
~ runmqsc JAVA.QUEUE.MANAGER.1
输入: 
    DEFINE QLOCAL(QUEUE1)    创建本地队列QUEUE1
    授权mquser1用户(id为3001)使用队列QUEUE1,其中PROFILE是对该条记录进行命名,PRINCIPAL指定特定用户,表明权限授权某用户。
    SET AUTHREC PROFILE(QUEUE1) OBJTYPE(QUEUE) PRINCIPAL('mquser1') AUTHADD(PUT,GET)
    授权用户mquser1可以连接队列管理器
    SET AUTHREC OBJTYPE(QMGR) PRINCIPAL('mquser1') AUTHADD(CONNECT)

    定义服务器连接通道
    DEFINE CHANNEL(JAVA.CLIENT.CHANNEL1) CHLTYPE(SVRCONN) TRPTYPE(TCP)

    授权MQ客户端可以连接上面定义的通道,通过ip地址和用户名方式授权
    SET CHLAUTH(JAVA.CLIENT.CHANNEL1) TYPE(ADDRESSMAP) ADDRESS('127.0.0.1') MCAUSER('mquser1')

    定义监听器,接受连接
    DEFINE LISTENER(JAVA.CLIENT.LISTENER1) TRPTYPE(TCP) CONTROL(QMGR) PORT(1316)
    启动:
    START LISTENER(JAVA.CLIENT.LISTENER1)
    结束:
    end

**编写Java程序**
MQ Java应用主要需要包含两个Jar包:com.ibm.mq.allclient.jar 和 com.ibm.mq.traceControl.jar
在安装目录下/opt/mqm/java/lib
# cd /opt/mqm/java/lib
# java -java com.ibm.mq.allclient.jar  查看该jar详细信息

接下来可以用vim或者IDE编写程序

3-客户端模式进行连接

简单应用,读写本机队列,发送消息和读取消息,以客户端模式,利用TCP/IP进行通信

# cd /home/mq
# vim MQTest.java
输入以下内容:
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值