IBM MQ note
author: 俊仔
官方文档
将测试消息放入本地队列
https://www.ibm.com/docs/en/ibm-mq/9.2?topic=queue-putting-test-message-local#bi00258_b
AB服务器测试
服务器A创建队列管理器A
sudo docker exec -it ibmmq_server_1 /bin/bash
#创建队列管理器
crtmqm -q QM_APPLE
# 开启队列管理器
strmqm QM_APPLE
#进入队列管理器
runmqsc QM_APPLE
#定义本地队列 指定为传输队列
define ql(LQA)
end
服务器B创建队列管理器B
#创建队列管理器
crtmqm -q QM_ORANGE
#开启队列管理器
strmqm QM_ORANGE
#进入队列管理器
runmqsc QM_ORANGE
#定义本地队列
define qlocal(LQB)
end
服务器A定义
runmqsc QM_APPLE
#定义传输队列
define qlocal (TQA) usage (xmitq)
#定义远程队列
define qremote (RQA) rname (LQB) rqmname(QM_ORANGE) xmitq (TQA)
end
服务器B定义
runmqsc QM_ORANGE
#定义接收通道
define channel (QM_ORANGE.QM_APPLE) chltype (RCVR) trptype (TCP)
#启动接收通道
start chl(QM_B.QM_A)
#定义监听器
define listener(LSR.QM_ORANGE)TRPTYPE(TCP) PORT(11517)
#启动监听器
start listener (LSR.QM_ORANGE)
end
服务器A操作
runmqsc QM_APPLE
#定义发送通道
define channel(QM_APPLE.QM_ORANGE) chltype(sdr) conname('127.0.0.1(11517)') xmitq(TQA) trptype(tcp)
#启动 发送通道
start channel (QM_APPLE.QM_ORANGE)
end
服务器A放入测试消息
//调用MQ内置样本程序向远程队列RQA放入消息
cd /opt/mqm/samp/bin
./amqsput RQA QM_APPLE
此时屏幕显示:
Sample AMQSPUT0 start
target queue is RQA
输入消息文本(一行或多行),然后按 Enter 键两次。
此时屏幕显示:
Sample AMQSPUT0 end
已将测试消息放入远程队列。
服务器B接收并获取测试消息
//调用MQ内置样本程序向Q1队列放入消息
cd /opt/mqm/samp/bin
./amqsget LQB QM_ORANGE
此时会屏幕显示:
Sample AMQSGET0 start
message <***> //×××为消息内容
已成功获取测试消息。
删除操作
删除队列管理器
endmqm -i QM_MOCK_SERVER
endmqm -i QM_MOCK_CLIENT
endmqm -i ESB_QM1
endmqm -i ESB_QM2
dltmqm ESB_QM1
dltmqm ESB_QM2
dltmqm QM_MOCK_SERVER
dltmqm QM_MOCK_SERVER
删除通道
delete chl(QM_A.QM_B)
删除队列
delete qremote (RQA)
停止操作
停止队列管理器
endmqm -i ESB_QM1
endmqm -i ESB_QM2
停止通道
stop chl(QM_ORANGE.QM_APPLE)
stop chl(QM_APPLE.QM_ORANGE)
重置通道
reset chl(QM_ORANGE.QM_APPLE)
停止监听
runmqsc ESB_QM1
stop listener(system.default.listener.tcp)
end
runmqsc ESB_QM2
stop listener(system.default.listener.tcp)
end
修改队列管理器的 监听端口
stop listener(LSR.QM_A)
alter listener(LSR.QM_A) trptype(tcp) conname(11514)
start listener(LSR.QM_A)
停止并删除
runmqsc ESB_QM1
stop listener(system.default.listener.tcp)
end
runmqsc ESB_QM2
stop listener(system.default.listener.tcp)
end
endmqm -i ESB_QM1
endmqm -i ESB_QM2
dltmqm ESB_QM1
dltmqm ESB_QM2
查看操作
查看版本
dspmqver
查看队列管理器
显示所有
dspmq
显示指定
dspmq -m MQCHNMSCS01
查看通道状态
runmqsc QM_MOCK_CLIENT
dis chs(CHL_CLIENT.SERVER)
dis chs(CHL_SERVER.CLIENT)
dis chs(CHL_CONN)
end
runmqsc QM_MOCK_SERVER
dis chs(CHL_SERVER.CLIENT)
dis chs(CHL_CLIENT.SERVER)
dis chs(CHL_CONN)
end
runmqsc ESB_QM1
dis chs(ESB_QM2.QM1)
dis chs(ESB_QM1.QM2)
dis chs(CHL_CONN)
end
runmqsc ESB_QM2
dis chs(ESB_QM2.QM1)
dis chs(ESB_QM1.QM2)
dis chs(CHL_CONN)
end
reset channel(ChannelName); 重置通道序号。当本地与其他MQ队列管理器的通道⽆法正常启动的情况,检查⽇志发现是通道序号不⼀
致,此时就需要先停⽌发送⽅通道,并在发送⽅和接收⽅进⾏通道计数的重置,重置后启动通道即可恢复通讯。想了解为什么要重置通道,
请查看⽂章:Websphere MQ消息序号Message Sequence详解
查看队列状态
所有队列
dis q(*)
本地队列
dis qlocal(QName)
或
dis ql(QName)
主要属性
dis qs(QName)
查看监听器状态
runmqsc QM_MOCK_CLIENT
dis listener(system.default.listener.tcp)
dis lsstatu(system.default.listener.tcp)
修改操作
修改通道
runmqsc ESB_QM1
alter chl(CHL_CONN) CHLTYPE(SVRCONN) mcauser('mqm') DISCINT(10)
end
runmqsc ESB_QM2
alter chl(CHL_CONN) CHLTYPE(SVRCONN) mcauser('mqm') DISCINT(10)
end
队列管理器操作
qm.ini
qm.ini 文件保存在 /QMNAME/qm.ini 中,其中:
-
在缺省情况下是 /QIBM/UserData/mqm。
-
QMNAME 是应用初始化文件的队列管理器的名称。
如/var/mqm/qmgrs/QM_ICBC_FINC_01/qm.ini
修改最大通道数及最大活动通道数
如果架构中存在was,并且应用服务器需要连接到队列管理器,则需要增加
MaxChannels/MaxActiveChannels两个参数。
参数值应该大于客户端的数目。
防止由于网恋不稳定的原因导致通道状态问题
增加KeepAlive=YES参数
在QM.INI中添加:
Chanaels:
MaxCHannels=1000
MaxActiveChanaels=1000
TCP:
KeepAlive=Yes
qm.ini文件的参数需要重启队列管理器生效。
qm.ini仅针对单个队列管理器生效。
mqs.ini文件针对全部队列管理器生效。目录:/var/mqm
sudo docker exec -it ibmmq_server_1 /bin/bash
cat /var/mqm/qmgrs/ESB_QM1/qm.ini
cat /var/mqm/qmgrs/ESB_QM2/qm.ini
配置如下
#*******************************************************************#
#* Module Name: qm.ini *#
#* Type : IBM MQ queue manager configuration file *#
# Function : Define the configuration of a single queue manager *#
#* *#
#*******************************************************************#
#* Notes : *#
#* 1) This file defines the configuration of the queue manager. *#
#* 2) The LogFilePages attribute is read-only and changes to it *#
#* will have no effect. *#
#* 3) The LogType attribute is read-only and changes to it will *#
#* have no effect. To change the log type of the queue manager *#
#* use the migmqlog command. *#
#* *#
#*******************************************************************#
ExitPath:
ExitsDefaultPath=/mnt/mqm/data/exits
ExitsDefaultPath64=/mnt/mqm/data/exits64
#* *#
#* *#
Log:
LogPrimaryFiles=3
LogSecondaryFiles=2
LogFilePages=4096
LogType=CIRCULAR
LogBufferPages=0
LogPath=/mnt/mqm/data/log/ESB_QM1/
LogWriteIntegrity=TripleWrite
Service:
Name=AuthorizationService
EntryPoints=14
ServiceComponent:
Service=AuthorizationService
Name=MQSeries.UNIX.auth.service
Module=amqzfu
ComponentDataSize=0
SSL:
AllowTLSV13=Yes
MinimumRSAKeySize=1
Channels:
ChlauthEarlyAdopt=Yes
ChlauthIgnoreUserCase=No
TCP:
SndBuffSize=0
RcvBuffSize=0
RcvSndBuffSize=0
RcvRcvBuffSize=0
ClntSndBuffSize=0
ClntRcvBuffSize=0
SvrSndBuffSize=0
SvrRcvBuffSize=0
SecureCommsOnly=NO
Subpool:
ShortSubpoolName=ESB_QM10000
队列操作
启动amqsput示例程序,如下所示:
启动amqsput示例程序,如下所示:
[Linux]在Linux 上,切换到 MQ_INSTALLATION_PATH/samp/bin目录,其中 表示安装IBM MQMQ_INSTALLATION_PATH的高级目录。键入命令:
./amqsput Q1 QM_APPLE
在Windows上,键入命令:
amqsput Q1 QM_APPLE
发送消息
例:
cd /opt/mqm/samp/bin
./amqsput Q_ESB_ZSX QM_HBK_CLIENT
接收消息
这些程序均采用以下位置参数:
-
源队列的名称(必填)
-
队列管理器的名称(可选)
如果未指定队列管理器,则 amqsget 连接到缺省队列管理器,而 amqsgetc 连接到由环境变量或客户端通道定义文件标识的队列管理器。
-
打开选项(可选)
如果未指定打开选项,则示例使用值 8193,它是这两个选项的组合:
- MQOO_INPUT_AS_Q_DEF
- MQOO_FAIL_IF_QUIESCING
-
关闭选项(可选)
如果未指定关闭选项,则示例使用 0 值,即 MQCO_NONE。
这些程序还使用名为MQSAMP_USER_ID的环境变量,该变量应设置为用于连接身份验证的用户 ID。设置后,程序将提示输入密码以伴随该用户 ID。
要运行这些程序,请输入以下内容之一:
amqsget myqueue qmanagername
amqsgetc myqueue qmanagername
使用 amqsget 和 amqsgetc
请注意,amqsget执行到队列管理器的本地连接,使用共享内存连接到队列管理器,因此只能在队列管理器所在的系统上运行,而amqsgetc执行客户端样式的连接(即使连接到同一系统上的队列管理器)。
使用amqsgetc时,您需要根据队列管理器主机或 IP 地址和队列管理器侦听器端口,提供有关如何实际到达队列管理器的应用程序详细信息。
通常这是使用 MQSERVER 环境变量或通过使用客户端通道定义表定义连接详细信息来完成的,也可以使用环境变量将其提供给 amqsgetc;
例:
cd /opt/mqm/samp/bin
./amqsget Q_RCVR_ZSX QM_HBK_SERVER
单机访问
docker ps -a|grep ibmmq
docker start ibmmq_server_1
sudo docker exec -it ibmmq_server_1 /bin/bash
dspmq
crtmqm -q QM_A
strmqm QM_A
runmqsc QM_A
#本地队列
define ql(QA)
#监听器操作
define listener(LSR.QM_A) trptype(TCP) port(11514)
start listener(LSR.QM_A)
#定义java客户端连接通道,创建服务器连接通道,mcauser为用户认证
define channel(CHL_A) CHLTYPE(SVRCONN) mcauser('mqm')
删除
DELETE LISTENER(LSR.QM_A)
发送
cd /opt/mqm/samp/bin
./amqsput QA QM_A
接收
cd /opt/mqm/samp/bin
./amqsget QA QM_A
日志操作
Linux查看日志
cd /var/mqm/qmgrs/队列名/errors
例:
cd /var/mqm/qmgrs/QM_MOCK_CLIENT/errors
cat AMQERR01.LOG
tail -f AMQERR01.LOG
Linux命令
linux下将目录授权给其他用户的步骤
更改目录所有者命令:
chown -R user /data/work
Docker-Compose命令
文件示例
version: '3'
services:
server:
image: "ibmcom/mq"
environment:
- LICENSE=accept
- MQ_DEV=false
- MQ_QMGR_NAME=QM_MOCK
- MQ_ADMIN_PASSWORD=passwr0d
- MQ_ENABLE_METRICS=true
volumes:
- ibmdata:/mnt/mqm
ports:
- "1414:1414" # Queue manager
- "11514:11514"
- "11515:11515"
- "11516:11516"
- "11517:11517"
- "11518:11518"
- "11519:11519"
- "11520:11520"
- "11521:11521"
- "9443:9443" # Web console
- "9157:9157" # Metrics
volumes:
ibmdata:
cd /work
cd /data/ibmmq
cat docker-compose.yml
cd /data/was
cat docker-compose.yml
# 停止
docker-compose down
# 重新加载
docker-compose up -d
Docker命令
Docker容器到物理主机
#基本格式
docker cp 容器ID:容器路径 本地路径
#使用实例
docker cp a98d3a1163fc:/var/mqm/qmgrs/QM_MOCK_CLIENT/errors/AMQERR01.LOG /work/AMQERR01.LOG
启动docker
sudo systemctl start docker
重启docker
sudo systemctl restart docker
重启容器
docker restart ibmmq_server_1
IBMMQ去掉认证
然后执行一下语句,移除三条认证:
#runmqsc QUEUE_ONE_MANAGER
runmqsc QUEUE_TWO_MANAGER
#设置去掉*MQADMIN用户的认证
SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST(*MQADMIN) ACTION(REMOVE)
#设置去掉通道SYSTEM.ADMIN.SVRCONN的认证//
SET CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
#设置去掉通道SYSTEM.通道的认证
SET CHLAUTH(SYSTEM.*) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
#队列管理执行设置命令,修改授权信息
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
#刷新连接安全认证
REFRESH SECURITY TYPE(CONNAUTH)
end
几条常用运维命令
#查看mq错误日志,路径在:/var/mqm/qmgrs/cdm/errors
#查看通道认证情况:
DISPLAY CHLAUTH(SYSTEM.DEF.SVRCONN)
#查看所有通道
DISPLAY CHL(*)
#查看通道认证是否开启
DISPLAY QMGR CHLAUTH
#打开/关闭通道认证:
ALTER QMGR CHLAUTH(ENABLE/DISABLEE)
服务端完整命令
启动docker
sudo systemctl start docker
进入IBMMQ容器
sudo docker exec -it ibmmq_server_1 /bin/bash
启动docker-compose
cd /work
docker-compose up -d
接收方
crtmqm QM_MOCK_SERVER
strmqm QM_MOCK_SERVER
runmqsc QM_MOCK_SERVER
define ql(Q_ESB)
define channel(CHL_ESB) chltype (RCVR) trptype (TCP)
start channel(CHL_ESB)
define channel(CHL_CONN) CHLTYPE(SVRCONN) mcauser('mqm')
start channel(CHL_CONN)
alter listener(system.default.listener.tcp) trptype(tcp) port(11515)
start listener(system.default.listener.tcp)
SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST(*MQADMIN) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.*) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
REFRESH SECURITY TYPE(CONNAUTH)
发送方
crtmqm QM_MOCK_CLIENT
strmqm QM_MOCK_CLIENT
runmqsc QM_MOCK_CLIENT
define qlocal(QUEUE_TR) usage (xmitq)
define qremote(Q_ESB) rname (Q_ESB) rqmname(QM_MOCK_SERVER) xmitq (QUEUE_TR)
define channel(CHL_ESB) chltype(sdr) conname('127.0.0.1(11515)') xmitq(QUEUE_TR) trptype(tcp)
start channel(CHL_ESB)
define channel(CHL_CONN) CHLTYPE(SVRCONN) mcauser('mqm')
start channel(CHL_CONN)
alter listener(system.default.listener.tcp) trptype(tcp) port(11514)
start listener(system.default.listener.tcp)
SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST(*MQADMIN) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.*) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
REFRESH SECURITY TYPE(CONNAUTH)
启动通道
runmqsc QM_MOCK_CLIENT
start channel(CHL_CONN)
start channel(CHL_ESB)
end
runmqsc QM_MOCK_SERVER
start channel(CHL_ESB)
start channel(CHL_CONN)
end
双向通讯
客户端执行命令
#创建发送队列管理器,maxmsgl参数为消息最大长度
crtmqm QM_MOCK_CLIENT
#启动发送队列管理器
strmqm QM_MOCK_CLIENT
#进入发送队列管理器
runmqsc QM_MOCK_CLIENT
#定义本地接收队列
define ql(Q_RCVR)
#定义传输队列
define ql(Q_TR) usage (xmitq)
#定义远程队列,即使发送时使用的队列
define qr(Q_ESB) rname (Q_RCVR) rqmname(QM_MOCK_SERVER) xmitq (Q_TR)
#定义发送传输通道,连接接收队列管理器的监听地址端口为127.0.0.1(11515),命名规则:本地通道.远程通道,
#注意:默认的 DISCINT 是 6000(6,000 秒),值为0会导致消息通道代理无限期地等待。该参数仅对通道类型(CHLTYPE)为 SVRCONN、SDR、SVR、CLUSSDR、CLUSRCVR 的通道有效。
define chl(CHL_CLIENT.SERVER) chltype(SDR) conname('127.0.0.1(11515)') xmitq(Q_TR) trptype(tcp) DISCINT(0)
#启动传输通道
start chl(CHL_CLIENT.SERVER)
#定义接收通道,命名规则:远程通道.本地通道
define chl(CHL_SERVER.CLIENT) chltype(RCVR) trptype(TCP)
start chl(CHL_SERVER.CLIENT)
#定义java客户端连接通道 #创建服务器连接通道,mcauser为用户认证
define chl(CHL_CONN) CHLTYPE(SVRCONN) mcauser('mqm') DISCINT(0)
#启动java客户端通道
start chl(CHL_CONN)
#修改监听器端口为 11514
alter listener(system.default.listener.tcp) trptype(tcp) port(11514)
#启动监听器
start listener(system.default.listener.tcp)
完整命令
crtmqm QM_MOCK_CLIENT
strmqm QM_MOCK_CLIENT
runmqsc QM_MOCK_CLIENT
define ql(Q_RCVR)
define ql(Q_TR) usage(xmitq)
define qr(Q_ESB) rname(Q_RCVR) rqmname(QM_MOCK_SERVER) xmitq (Q_TR)
define chl(CHL_CLIENT.SERVER) chltype(sdr) conname('127.0.0.1(11515)') xmitq(Q_TR) trptype(tcp) DISCINT(0)
start chl(CHL_CLIENT.SERVER)
define chl(CHL_SERVER.CLIENT) chltype (RCVR) trptype (TCP)
start chl(CHL_SERVER.CLIENT)
define chl(CHL_CONN) CHLTYPE(SVRCONN) mcauser('mqm') DISCINT(0)
start chl(CHL_CONN)
alter listener(system.default.listener.tcp) trptype(tcp) port(11514)
start listener(system.default.listener.tcp)
SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST(*MQADMIN) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.*) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
REFRESH SECURITY TYPE(CONNAUTH)
end
服务端执行命令
#创建接收队列管理器
crtmqm QM_MOCK_SERVER
#启动接收队列管理器
strmqm QM_MOCK_SERVER
#进入接收队列管理器
runmqsc QM_MOCK_SERVER
#定义本地接收队列
define ql(Q_RCVR)
#定义传输队列
define ql(Q_TR) usage (xmitq)
#定义远程队列,即使发送时使用的队列
define qr(Q_ESB) rname (Q_RCVR) rqmname(QM_MOCK_CLIENT) xmitq (Q_TR)
#定义发送传输通道,连接接收队列管理器的监听地址端口为127.0.0.1(11514),命名规则:本地通道.远程通道
#注意:默认的 DISCINT 是 6000(6,000 秒),值为0会导致消息通道代理无限期地等待。该参数仅对通道类型(CHLTYPE)为 SVRCONN、SDR、SVR、CLUSSDR、CLUSRCVR 的通道有效。
define chl(CHL_SERVER.CLIENT) chltype(sdr) conname('127.0.0.1(11514)') xmitq(Q_TR) trptype(tcp) DISCINT(0)
#启动传输通道
start chl(CHL_SERVER.CLIENT)
#定义接收通道,命名规则:远程通道.本地通道
define chl(CHL_CLIENT.SERVER) chltype (RCVR) trptype (TCP)
start chl(CHL_CLIENT.SERVER)
#定义java客户端连接通道 #创建服务器连接通道,mcauser为用户认证
define chl(CHL_CONN) CHLTYPE(SVRCONN) mcauser('mqm') DISCINT(0)
start chl(CHL_CONN)
#修改监听器端口为 11515
alter listener(system.default.listener.tcp) trptype(tcp) port(11515)
#启动监听器
start listener(system.default.listener.tcp)
完整命令
crtmqm QM_MOCK_SERVER
strmqm QM_MOCK_SERVER
runmqsc QM_MOCK_SERVER
define ql(Q_RCVR)
define ql(Q_TR) usage (xmitq)
define qr(Q_ESB) rname (Q_RCVR) rqmname(QM_MOCK_CLIENT) xmitq (Q_TR)
define chl(CHL_SERVER.CLIENT) chltype(sdr) conname('127.0.0.1(11514)') xmitq(Q_TR) trptype(tcp) DISCINT(0)
start chl(CHL_SERVER.CLIENT)
define chl(CHL_CLIENT.SERVER) chltype (RCVR) trptype (TCP)
start chl(CHL_CLIENT.SERVER)
define chl(CHL_CONN) CHLTYPE(SVRCONN) mcauser('mqm') DISCINT(0)
start chl(CHL_CONN)
alter listener(system.default.listener.tcp) trptype(tcp) port(11515)
start listener(system.default.listener.tcp)
SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST(*MQADMIN) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.*) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
REFRESH SECURITY TYPE(CONNAUTH)
end
启动通道
runmqsc QM_MOCK_CLIENT
start chl(CHL_CONN)
start chl(CHL_SERVER.CLIENT)
start chl(CHL_CLIENT.SERVER)
end
runmqsc QM_MOCK_SERVER
start chl(CHL_CONN)
start chl(CHL_SERVER.CLIENT)
start chl(CHL_CLIENT.SERVER)
end
第三方服务端
crtmqm QM_THIRD_SERVER
strmqm QM_THIRD_SERVER
runmqsc QM_THIRD_SERVER
define ql(Q_RCVR)
define listener(LSR.THIRD) trptype(TCP) port(11516)
start listener(LSR.THIRD)
SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST(*MQADMIN) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.*) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
REFRESH SECURITY TYPE(CONNAUTH)
end
ESB_REQ
crtmqm ESB_REQ
strmqm ESB_REQ
runmqsc ESB_REQ
define ql(Q_RCVR)
define ql(Q_TR) usage(xmitq)
define qr(Q_ESB) rname(Q_RCVR) rqmname(ESB_RES) xmitq (Q_TR)
define chl(ESB_REQ.RES) chltype(SDR) conname('127.0.0.1(11518)') xmitq(Q_TR) trptype(tcp) DISCINT(0)
start chl(ESB_REQ.RES)
define chl(ESB_RES.REQ) chltype(RCVR) trptype(TCP)
start chl(ESB_RES.REQ)
define chl(CHL_CONN) CHLTYPE(SVRCONN) mcauser('mqm')
start chl(CHL_CONN)
alter listener(system.default.listener.tcp) trptype(tcp) port(11517)
start listener(system.default.listener.tcp)
SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST(*MQADMIN) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.*) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
REFRESH SECURITY TYPE(CONNAUTH)
end
ESB_RES
crtmqm ESB_RES
strmqm ESB_RES
runmqsc ESB_RES
define ql(Q_RCVR)
define ql(Q_TR) usage (xmitq)
define qr(Q_ESB) rname (Q_RCVR) rqmname(ESB_REQ) xmitq (Q_TR)
define chl(ESB_RES.REQ) chltype(SDR) conname('127.0.0.1(11517)') xmitq(Q_TR) trptype(tcp) DISCINT(0)
start chl(ESB_RES.REQ)
define chl(ESB_REQ.RES) chltype(RCVR) trptype(TCP)
start chl(ESB_REQ.RES)
define chl(CHL_CONN) CHLTYPE(SVRCONN) mcauser('mqm')
start chl(CHL_CONN)
alter listener(system.default.listener.tcp) trptype(tcp) port(11518)
start listener(system.default.listener.tcp)
SET CHLAUTH(*) TYPE(BLOCKUSER) USERLIST(*MQADMIN) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
SET CHLAUTH(SYSTEM.*) TYPE(ADDRESSMAP) ADDRESS(*) ACTION(REMOVE)
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
REFRESH SECURITY TYPE(CONNAUTH)
end
开启队列管理器、通道
sudo docker exec -it ibmmq_server_1 /bin/bash
strmqm QM_MOCK_SERVER
runmqsc QM_MOCK_SERVER
start chl(CHL_CLIENT.SERVER)
start chl(CHL_SERVER.CLIENT)
start chl(CHL_CONN)
start listener(system.default.listener.tcp)
strmqm QM_MOCK_CLIENT
runmqsc QM_MOCK_CLIENT
start chl(CHL_CLIENT.SERVER)
start chl(CHL_SERVER.CLIENT)
start chl(CHL_CONN)
start listener(system.default.listener.tcp)
runmqsc ESB_QM1
start chl(ESB_QM2.QM1)
start chl(ESB_QM1.QM2)
start chl(CHL_CONN)
end
runmqsc ESB_QM2
start chl(ESB_QM2.QM1)
start chl(ESB_QM1.QM2)
start chl(CHL_CONN)
end
strmqm QM_THIRD_SERVER
runmqsc QM_THIRD_SERVER
start listener(LSR.THIRD)
end
ESB_REQ、ESB_RES 新建队列
runmqsc ESB_REQ
define ql(Q_RCVR_LJ)
define ql(Q_TR_LJ) usage(xmitq)
define qr(Q_ESB_LJ) rname(Q_RCVR_LJ) rqmname(ESB_RES) xmitq (Q_TR)
end
runmqsc ESB_RES
define ql(Q_RCVR_LJ)
define ql(Q_TR_LJ) usage(xmitq)
define qr(Q_ESB_LJ) rname(Q_RCVR_LJ) rqmname(ESB_REQ) xmitq (Q_TR)
end
ESB_REQ、ESB_RES 删除队列
runmqsc ESB_REQ
delete ql(Q_RCVR_LJ)
delete ql(Q_TR_LJ)
delete qr(Q_ESB_LJ)
end
runmqsc ESB_RES
delete ql(Q_RCVR_LJ)
delete ql(Q_TR_LJ)
delete qr(Q_ESB_LJ)
end
控制台
启动控制台
strmqweb
访问地址
https://hostname:9443/ibmmq/console
用户名密码可在运行环境配置
User: admin
Password: passwr0d
确定 IBM MQ 控制台 URL
dspmqweb
输出
bash-4.4$ dspmqweb
MQWB1124I: Server 'mqweb' is running.
URLS:
https://d74fd3d75dda:9443/ibmmq/rest/
https://d74fd3d75dda:9443/ibmmq/console/
bash-4.4$
登录到IBM MQ 控制台。从IBM MQ 9.0.2开始,使用用户名 mqadmin 和密码 mqadmin。在IBM MQ 9.0.1中,使用用户名admin和密码 admin。