宿主机版本:win10 64位
linux虚拟机版本:rethat 7.3
mq版本:7.5
VirtualBox版本: 6.1.22 r144080 (Qt5.6.2)
1、安装linux虚拟机
首先安装VirtualBox,根据提示默认安装即可,然后安装红帽系统
安装完成如下图所示,rethat_6为32位linux版本(自己测试用,跟本博文无关),rethat_7.3_A、rethat_7.3_B为64位linux版本:
A、B两台虚拟机根据提示安装即可,这里拿安装rethat_7.3_C为例
新建虚拟机
软件安装选择GUI时为带界面安装:
等待安装完成:
2、配置linux虚拟机静态IP并实现多机互ping且能访问外网
管理-》主机网络管理-》创建 启用第二块网卡,默认配置,记住网络掩码,这里是192.168.253.1/24
配置两块网卡,网卡1选择NET,网卡2选择host-only
修改网卡配置,给网卡2设置固定IP,设置后重启网卡服务service network restart
参考资料:https://www.cnblogs.com/telunike/p/10850969.html
3、安装IBMMQ
安装的MQ软件包为WS_MQ_FOR_LNX_ON_X86_64_V7.5_EIMG.tar.gz
将WS_MQ_FOR_LNX_ON_X86_64_V7.5_EIMG.tar.gz解压至某一目录。
(1)执行接受许可脚本: ./mqlicense.sh –accept 这个脚本是要安装WebSphere MQ 软件包的MQ许可程序. 至关重要,这个脚本没有正确配置的话将导致MQ安装失败.–accept是不启动图形直接接受许可。
(2) 安装WebSphere MQ for Linux 服务器:
[root@localhostmq]# rpm-ivh MQSeriesRuntime-7.5.0-0.i386.rpm
[root@localhostmq]# rpm-ivh MQSeriesSDK-7.5.0-0.i386.rpm
[root@localhostmq]# rpm-ivh MQSeriesServer-7.5.0-0.i386.rpm
注:安装完成后,相关文件会被自动安装在/opt/mqm下,在安装MQSeriesRuntime-7.5.0-0.i386.rpm时候,安装程序为系统自动创建了一个mqm用户和mqm组,安装完毕后,需要使用该用户来进行MQ的配置。
(3) 安装WebSphere MQ for Linux 客户端:
[root@localhostmq]# rpm-ivh MQSeriesClient-7.5.0-0.i386.rpm
(4) 安装WebSphere MQ 样本程序(其中包括amqsput、amqsget、amqsgbr和amqsbcg等)
[root@localhostmq]# rpm-ivh MQSeriesSamples-7.5.0-0.i386.rpm
样本程序安装在/opt/mqm/samp/bin 中。
(5)安装MQ其他软件包
[root@localhostmq]# rpm-ivh MQSeriesMan-7.5.0-0.i386.rpm
[root@localhostmq]# rpm-ivh MQSeriesJava-7.5.0-0.i386.rpm
[root@localhostmq]# rpm-ivh IBMJava2-SDK-1.4.2-0.0.i386.rpm
上面最后一步安装的是JDK运行环境,如果已经有相同或更高版本的JDK,不需要再安装。
(6) 安装过程创建了一个名为mqm的用户和一个同样名为mqm的组,此时,新用户是被锁定的,必须设置一个密码来解锁,这样才能正常使用该用户。用passwd命令:[root@localhostmq]# passwd mqm
以上操作均在root用户下操作,至此MQ7.5安装结束。MQ的配置相关命令操作均在mqm用户下。
4、创建MQ队列及互通测试
发送方为主机A(192.168.253.11),接收方为主机B(192.168.253.12)
发送方:
队列管理器(QM_A)
本地队列(QL_A) 远程队列(QR_B) 本地传输队列(QT_B) 发送通道(CHL_A_TO_B) 接收通道(CHL_B_TO_A)
1) 创建队列管理器(QM_A): crtmqm -q QM_A
strmqm QM_A
runmqsc QM_A
2) 创建本地队列(QL_A): define qlocal (QL_A)
3) 创建远程队列(QR_B): define qremote(QR_B) rname(QL_B) rqmname(QM_B) xmitq(QT_B)
4) 创建本地传输队列(QT_B): define qlocal (QT_B) usage (xmitq) defpsist(yes)
5) 创建发送通道(CHL_A_TO_B): define channel (CHL_A_TO_B) chltype (sdr) conname ('192.168.253.12(1416)') xmitq (QT_B) trptype (tcp)
6) 创建接收通道(CHL_B_TO_A): define channel (CHL_B_TO_A) chltype (rcvr) trptype(tcp)
7) 启动发送通道:start channel (CHL_A_TO_B)
8) 设置监听:define listener(QM_A.LISTEN) trptype(tcp) CONTROL(QMGR) port(1415)
启动监听:start listener(QM_A.LISTEN)
如果用的是默认监听,启动命令:start listener(system.default.listener.tcp)
默认端口为1414,如果被占用,则执行命令:alter listener(system.default.listener.tcp) trptype(tcp) port(1415)
接收方:
队列管理器(QM_B)
本地队列(QL_B) 远程队列(QR_A) 本地传输队列(QT_A) 发送通道(CHL_B_TO_A) 接收通道(CHL_A_TO_B)
1) 创建队列管理器(QM_B): crtmqm -q QM_B
strmqm QM_B
runmqsc QM_B
2) 创建本地队列(QL_B): define qlocal (QL_B)
3) 创建远程队列(QR_A): define qremote(QR_A) rname(QL_A) rqmname(QM_A) xmitq(QT_A)
4) 创建本地传输队列(QT_A): define qlocal (QT_A) usage (xmitq) defpsist(yes)
5) 创建发送通道(CHL_B_TO_A): define channel (CHL_B_TO_A) chltype (sdr) conname ('192.168.253.11(1415)') xmitq (QT_A) trptype (tcp)
6) 创建接收通道(CHL_A_TO_B): define channel (CHL_A_TO_B) chltype (rcvr) trptype(tcp)
7) 启动发送通道:start channel (CHL_B_TO_A)
8) 设置监听:define listener(QM_B.LISTEN) trptype(tcp) CONTROL(QMGR) port(1416)
启动监听:start listener(QM_B.LISTEN)
如果用的是默认监听,启动命令:start listener(system.default.listener.tcp)
默认端口为1414,如果被占用,则执行命令:alter listener(system.default.listener.tcp) trptype(tcp) port(1416)
结果图示:
A->B
B->A
示意图:
谢谢!