IBM MQ系列:认证及队列创建
引言
本文是一次是真实从0开始创建消息队列,并开启了访问认证的过程。
本次目标如下:
Ip:10.10.10.2
port:1416
Queue manager:QMGR_TEST
channel:CHL_TEST
queue_name:Q_TRAN_TEST_IN, Q_TRAN_TEST_OUT, Q_TRAN_TEST2_IN, Q_TRAN_TEST2_OUT
Username:testuser
Passed:testuser123
部署步骤
登陆至mqm用户操作:su - mqm
1、创建管理队列管理器
crtmqm QMGR_TEST
2、启动此队列管理器
strmqm QMGR_TEST
3、创建本地队列
runmqsc QMGR_TEST
define ql (Q_TRAN_TEST_IN) replace
define ql (Q_TRAN_TEST_OUT) replace
define ql (Q_TRAN_TEST2_IN) replace
define ql (Q_TRAN_TEST2_OUT) replace
4、创建服务器接收消息通道
runmqsc QMGR_TEST
define channel (CHL_TEST) chltype (SVRCONN) trptype (TCP)
alter listener(system.default.listener.tcp) trptype(tcp) port(1416)
start listener(system.default.listener.tcp)
end
5、查看接收通道状态
runmqsc QMGR_TEST
dis chs(*)
6、测试验证
cd /opt/mqm/samp/
./amqsput Q_TRAN_TEST_IN QMGR_TEST
./amqsget Q_TRAN_TEST_IN QMGR_TEST
./amqsput Q_TRAN_TEST2_IN QMGR_TEST
./amqsget Q_TRAN_TEST2_IN QMGR_TEST
7、关闭认证
ALTER QMGR CHLAUTH(DISABLED) CONNAUTH(' ')
REFRESH SECURITY TYPE(CONNAUTH)
# 如果需要关闭认证的同时,使用用户密码,需要添加对应用户
ALTER CHL(通道名) CHLTYPE(SVRCONN) MCAUSER('用户名')
8、开启认证
ALTER QMGR CHLAUTH(ENABLED) CONNAUTH(' ')
ALTER QMGR CONNAUTH(USE.PW)
DEFINE AUTHINFO(USE.PW) AUTHTYPE(IDPWOS) FAILDLAY(10) CHCKLOCL(OPTIONAL) CHCKCLNT(REQUIRED)
set CHLAUTH(通道名) type(ADDRESSMAP) ADDRESS(*) USERSRC(CHANNEL) CHCKCLNT(REQUIRED)
set CHLAUTH(通道名) TYPE(BLOCKUSER) USERLIST('mqm')
REFRESH SECURITY TYPE(CONNAUTH)
9、新增认证用户
新增一个系统用户,属组为mqm即可作为认证用户
useradd -g mqm -u 1004 testuser
passwd testuser
设置编码字符
# 设置为ascii编码:
mqm@10-10-10-2:/opt/mqm/bin$ ./runmqsc QMGR_TEST
5724-H72 (C) Copyright IBM Corp. 1994, 2021.
Starting MQSC for queue manager QMGR_TEST.
ALTER QMGR CCSID(1252)
1 : ALTER QMGR CCSID(1252)
AMQ8005I: IBM MQ queue manager changed.
end
2 : end
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed
消息读写测试验证
其中,testuser为测试用户,testuser123为测试密码。
这里是用了python的pymqi模块发送和消费消息。
- 安装:
pip install pymqi
#注意,如果需要使用pymqi模块,并且还需要依赖MQ的SDK组件。
dpkg -i ibmmq-sdk_9.2.2.0_amd64.deb
- 示例如下:
#!/usr/bin/python
import pymqi
queue_manager = 'QMGR_TEST'
channel = 'CHL_TEST'
host = '10.10.10.2'
port = '1416'
queue_name = 'Q_TRAN_TEST_IN'
message = 'Hello from Python!'
conn_info = '%s(%s)' % (host, port)
qmgr = pymqi.connect(queue_manager, channel, conn_info, 'testuser', 'testuser123')
queue = pymqi.Queue(qmgr, queue_name)
queue.put(message)
queue.close()
qmgr.disconnect()
# How to get the message off a queue¶
qmgr = pymqi.connect(queue_manager, channel, conn_info, 'testuser', 'testuser123')
queue = pymqi.Queue(qmgr, queue_name)
message = queue.get()
print(message)
queue.close()
qmgr.disconnect()
更多IBM MQ相关内容详见:
IBM MQ系列:WebSphere MQ快速入门
IBM MQ系列:(集群版)部署及初始化
IBM MQ系列:(单机版)部署调试
IBM MQ系列:认证及队列创建
IBM MQ系列:(集群版)配置参考指引
IBM MQ系列:(client to service) SSL配置指引
IBM MQ系列:python客户端安装指引
IBM MQ系列:重置序列号
IBM MQ系列:备份与恢复
IBM MQ系列:操作命令手册
IBM MQ系列:队列管理器无法正常启动修复方案
共有 0 条评论