MQ常用管理命令

1-说明

本文参考MQ 9.0官方文档,结合平时使用整理,主要是Linux平台下的命令为主,部分平台(例如windows)会特别注明。

2-语法规则

命名规则与限制
- Queue,Process,namelists,clusters,topics,services,authentication information对象最多48字符长
- channel对象名称最大20字符长,storage class最多8字符,CF 结构最多12字符长
- 长命令时,换行使用加号 + 前后需要空格

对象
- 队列管理器,以“SYSTEM.”开头的队列是预定义的队列,以SYSTEM.开头命名的,是系统对象

3-安装与配置

rpm -ivh  MQSeriesRuntime*.rpm MQSeriesServer*.rpm ...   根据需要安装必须要的MQ组件
su - mqm  注意MQ管理命令必须是属于mqm组的用户才有权限执行,默认创建了mqm用户

/opt/mqm    默认MQ安装位置

设置环境变量,运行管理命令
cd /opt/mqm/bin
source setmqenv -s   设置变量,以便使用各种MQ管理命令

4-控制命令control Commands

比较控制命令和脚本命令

控制命令是MQ提供的一系列可运行的小程序,它们可以独立地在linux shell中直接运行,对MQ各种对象进行操作,可以完成大部分功能。
其对于队列管理器对象本身的控制、MQ整体配置等功能支持较完善,但对于队列、通道、监听器等管理器中具体的对象控制较弱。
MQSC脚本命令需要在runmqsc启动的脚本解释器中运行,无法单独运行,其对于队列、通道等具体对象控制较强,完成大部分操作。

限制
- linux类系统中,命令是区分大小写的,windows下命令和参数标识(-)不区分大小写,但是参数值区分,例如队列名称
- 多个MQ安装副本时,相关命令设置一般关联当前命令所在的副本

队列管理器

crtmqm  QMgrName  创建队列管理器QMgrName,一般采用默认即可

crtmqm -c “测试队列管理器”  -ll -q JAVA.QUEUE.MANAGER.1  
    -c描述信息;-ll线性日志日志,-lc是循环日志(默认);-q设置为默认管理器

crtmqm  -ld /var/tmp/logs -md /var/tmp/mqm/qmgrs -q JAVA.QUEUE.MANAGER.1
    -ld设置日志路径,默认是/var/mqm/log; -md设置数据文件路径,默认是/var/mqm/qmgrs

crtmqm -q 60000 -q JAVA.QUEUE.MANAGER.1
    -q 指明队列管理器管理监听器的端口,SYSTEM.LISTENER.TCP.1


dltmqm  QMgrName    删除指定名称的队列管理器
strmqm  QMgrName    运行队列管理器

endmqm  QMgrName    -c,默认受控制的方式停止队列管理器(等所有应用断开连接以及MQI调用处理完成)
endmqm  -i  QMgrName  立即关闭,(断开连接,等待MQI调用完成,未完成的任务下次启动回滚)
endmqm -p QMgrName  强制终止,一般异常时使用,会导致无法预知的结果

setmqm  -m QMgrName  -n InstallationName   设置QMgrName队列管理器相关联的安装副本

队列消息

dmpmqmsg:消息查看,导入导出,拷贝,移动等
dmpmqmsg -m QMgrName -i QUEUE1 -f stdout 查看队列QUEUE1消息
dmpmqmsg -m QMgrName -i QUEUE1 -f stdout -dT  查看消息的时间

dmpmqmsg -m QMgrName -i QUEUE1 -f  /var/tmp/msg.txt  导出所有消息到一个文件
dmpmqmsg -m QMgrName -i QUEUE1 -f /var/tmp/msg%n   每条消息导出一个文件
dmpmqmsg -m QMgrName -o QUEUE1 -f /var/tmp/msg.txt  导入消息到队列

dmpmqmsg -m QMgrName -i QUEUE1 -o QUEUE2  拷贝消息到其它队列
dmpmqmsg -m QMgrName -i QUEUE1 -o QUEUE2 -r#10 拷贝前10条消息到队列
dmpmqmsg -m QMgrName -I QUEUE1 -o QUEUE2 -T1440 拷贝1天前的消息到队列

dmpmqmsg -m QMgrName -i Q1 -fstdout -T1440,2880 查看前一天的消息T[OlderThanTime][YoungerThanTime]
dmpmqmsg -iMATCH -s keyword1 -s keyword2 -m QMgrName -i Q1 查看匹配keyword1和keyword2的消息
dmpmqmsg -IMATCH -S keyword1 查看不含keyword1的消息

查看队列管理器一些管理信息
dmpmqaut 查看默认队列管理器定义的授权记录信息
dmpmqaut -m QMgrName 查看QMgrName定义的授权记录信息
dmpmqaut -m QMgrName -t channel 查看channel对象的授权记录信息(其它对象,listener|lstr,qmgr,queue|q)

dmpmqcfg -a -m QMgrName  查看队列管理所有配置信息,方便重建和恢复

dmqmqlog -m QMgrName  查看MQ 队列管理器系统日志
dmqmqlog -s nnnn:nnnn:nnnn:nnnn  从特定的LSN(log sequence number,日志序列号)号开始查看默认队列管理器的日志

dspmq   查看当前机器所有的队列管理器
dspmqcsv  QMgraName  查看队列管理器目前的运行状态

dspmqfls  SYSTEM.ADMIN*  查看默认管理器以 SYSTEM.ADMIN开头的对象文件路径
dspmqfils -m JAVA.QUEUE.MANAGER.1 -t queue queue* 查看名称为queue开头的队列对象的文件目录

dspmqtrn -m QMgrName  查看队列事务信息

dspmqver  查看MQ版本信息(默认是查看server组件和第一个安装副本的)
dspmqver -a 查看所有组件的版本信息
dspmqver -i 查看所有安装副本的信息

mqrc  AMQ2045  查看AMQ信息代表的含义
mqrc  2033  查看返回值代表的意义

队列管理器配置文件
队列管理器配置信息:
默认在/var/mqm/mqs.ini文件中,有属性Name(管理名称)、Prefix(数据目录前缀)、Directory(管理器数据目录名称)、DataPath(数据目录完整路径)

dspmqinf QMgrNmae  查看指定队列管理器配置信息

在文件mqs.ini中添加一个名为JAVA.QUEUE.MANAGER.2的队列管理器配置信息
addmqinf  -v DataPath=/var/mqm/qmgrs/JAVA!QUEUE!MANAGER!2 + 
    -v Prefix=/var/mqm + 
    -v Directory=JAVA!QUEUE!MANAGER!2 + 
    -v Name=JAVA.QUEUE.MANAGER.2

通过以上两条命令,可以在不同服务器上复制创建出配置一样的队列管理器实例

环境变量
# /opt/mqm/bin/crtmqenv -s 为当前安装副本创建和展示合适的环境变量列表,注意这里并没有设置shell环境

安装信息文件
安装信息配置文件/etc/opt/mqm/mqinst.ini,以下命令主要是该文件,不能直接改动该文件
第一个MQ安装版本自动命名Installation1添加到该文,因为此时crtmqinst命令还未能用;
后续安装可以先配置该文件例如自己命名,然后再安装其它版本,实现多副本安装。
必须以root用户权限来执行。
-n InstallationName:最多16个字符,也就是安装名称最多16个字符

/opt/mqm/bin/crtmqinst -n MyInstallation2  -p /opt/myInstallation2  -d  "MQ 第二个副本安装"
在mqinst.ini添加条目,创建一个安装名称为MyInstallation2,安装路径为/opt/myInstallation2的安装实例信息

dspmqinst   MyInstallation2这个安装实例状态 `State:Not Available`
因为还未安装,继续安装MyInstallation2实例
# ./mqlicense.sh
# ./crgmqpkg 2    根据当前系统已安装的MQ情况,创建一个需要的安装包的集合
    重新打包完成在/var/tmp/mq_rpms/2/x86_64目录下,2是唯一标识安装包的,可以是16个字符内的任意字符串

# cd /var/tmp/mq_rpms/2/x86_64
# rpm --prefix /opt/myInstallation2 -ivh  MQSeriesServer_2-8.0.0-2.x86_64.rpm MQSeriesRuntime_2-8.0.0-2.x86_64.rpm 
# /opt/myInstallation2/bin/dspmqinst 

相关命令:
dltmqinst -n MyInstallation2 -p /opt/myInstallation2 删除指定副本的安装信息(roOt用户)

setmqinst -i -n MyInstallation2   指定MyInstallation2 成为主安装副本
setmqinst -x -n MyInstallation2   取消MyInstallation2 作为主安装副本

dspmqinst   查看本机所有安装副本信息
dpsmqinst -n MyInstallation2  查看副本MyInstallation2的安装信息

mqconfig -v 8.0 检查系统设置是否满足MQ 8.0的安装要求

其它对象命令

runmqsc  QmgrName  进入脚本命令执行环境,操作对应的队列管理器,执行MQSC命令
runmqlsr -t tcp -p 1414 -i 127.0.0.1 -m QmgrName 启动队列管理器监听器
runmqchl -c channel1 -m QMgrName  启动指定的通道

5-MQSC命令

MQSC:MQ Script Command,通过命令解释器执行
命令脚本可以管理各种队列管理器对象, 包括queue manager, queues, process definitions,
channels, client connection channels, listeners, services, namelists, clusters,
and authentication information objects.

启动脚本解释器

runmqsc  启动默认管理器的命令解释器
runmqsc -v QmgrName < "/var/mqm/mqsc/commfile.in"  验证文件里脚本命令是否正确
runmqsc QmgrName < "/var/mqm/mqsc/commfile.in" > "/var/mqm/mqsc/mqscfile.out"  执行文件命令并输出到文件(文件语句以分号)

远程队列管理器操作,需要进行配置,这里仅仅列出命令
runmqsc -w 30 -m QMLOCAL QMREMOTE  连接远程的队列管理器进行命令执行
strmqcsv   QmgrName 启动脚本命令服务,以便接受远程脚本命令

帮助:
ls  查看当前有哪些命令可以用
DIS 直接敲入命令回车会显示 参数语法提示

命令归纳总结
命令操作的主要对象有11种:(这里只考虑linux、windows,对于z/os和IBM i系列平台命令不考虑)

CHANNEL(通道)、LISTENER(监听器)
queues [QALIAS\QLOCAL\QMODEL\QREMOTE](不同种类队列对象)

SUB(订阅对象)、TOPIC(话题对象)、AUTHINFO(授权对象信息)
SERVICE(服务对象)、PROCESS(进程对象)、COMMINFO(通信信息对象,多播通信需要)

其它可修改可查看对象:
NAMELIST(名称列表)、QMGR(队列管理器对象)

主要的命令操作包括:9种
ALTER(修改)、DEFINE(定义对象)、CLEAR(清除)、DELETE(删除)、DISPLAY或者DIS简写(查看)
RESET(重置)、SET(设置)、START(启动)、STOP(停止)

其它操作:
PING(测试连通)、MOVE(移动)、PURGE(清除)、REFRESH(刷新)、RESOLVE(求解)

基本命令都是:操作+对象+参数 

常用命令

队列:
DIS QUEUE(*)  查看当前所有的队列对象
DIS QLOCAL(*) 查看QLOCAL类型的队列对象
DEFINE QLOCAL(QUEUE1) 定义本地队列QUEUE1
DIS QUEUE(QUEUE1) 查看对象QUEUE1的属性信息
DIS QSTATUS(QUEUE1) 查看QUEUE1的运行状态
CLEAR QLOCAL(QUEUE1) 清除队列消息
DELETE QLOCAL(QUEUE1)  删除本地队列
DELETE QLOCAL(QUEUE1) PURAGE  删除队列,即使有提交的消息


队列管理器:
DIS QMGR  查看当前队列管理器的属性信息
DIS QMSTATUS 查看当前队列管理器运行状态
DIS CONN(*)  查看应用连接情况,每个应用连接产生24个字节的唯一id
PING QMGR  发送测试消息给队列管理器的命令服务队列

通道:
通道具有多种类型,不同类型应用场景、支持的参数不一样
CHANNEL可以简写CHL
SVRCONN:服务器连接通道,可接受客户端应用等连接
注意字符串 以单引号或者不加引号(注意中文一定要加),双引号会出错,单引号!

DEFINE CHANNEL(channel1) CHLTYPE(SVRCONN) DESCR('测试通道1') MCAUSER('mquser1') TRPTYPE(TCP)
定义TCP协议的服务器通道,使用系统用户user1访问MQ资源

DIS CHANNEL(*)   查看所有通道信息
DIS CHANNEL(channel1)   查看通道channel1的信息
DIS CHANNEL(*) TYPE(SVRCONN)  查看指定类型的通道信息

SET CHLAUTH(channel1)  TYPE(ADDRESSMAP)  ADDRESS(127.0.0.1) DESCR('测试授权')   USERSRC(MAP) MCAUSER('mquser1')   
注意:定义运行127.0.0.1通过通道channel1以系统用户mquser1来访问MQ资源

SET CHLAUTH(channel1) TYPE(USERMAP) CLNTUSER('clientUser1')   DESCR('测试授权') USERSRC(MAP) MCAUSER('mquser1')
注意:定义客户端应用以用户clientuser1来通过通道channel1,映射成系统用户mquser1来访问MQ
USERMAP类型只支持 SVRCONN类型通道

DIS CHLAUTH(channel1)  查看通道所有权限认证信息
DIS CHLAUTH(channel1)  TYPE(ADDRESSMAP)  查看通道特定类型的权限认证信息
DIS CHLAUTH(channel1)  TYPE(USERMAP)  
DIS CHSTATUS(channel1) 查看通道状态
PING CHANNEL(channel1) 测试测试消息到队列,仅支持SENDER, SERVER 和CLUSSDR 类型

START CHANNEL(channel1)
STOP  CHANNEL(channel1)

DELETE CHANNEL(channel1)  删除通道

监听器:
DEFINE LISTENER(listener1) TRPTYPE(TCP) IPADDR('127.0.0.1') PORT(50005) DESCR('监听器测试')
定义地址127.0.0.1和端口50005的监听器,IPADDR可以省略,默认在所有的本机地址监听

DIS LISTENER(listener1)  
或者简写 
DIS LSTR(listener1)  查看监听器属性

START LISTENER(listener1)  启动
DIS LSSTATUS(listener1)  查看已启动的监听器运行状态(必须启动)
STOP LISTENER(listener1) 停止监听器


定义对象访问授权信息:
SET AUTHREC PROFILE(CHANNEL1) OBJTYPE(CHANNEL) PRINCIPAL('mquser1') AUTHADD(ALL)
授予用户mquser全部权限访问通道对象channel1

SET AUTHREC PROFILE(CHANNEL1) OBJTYPE(CHANNEL) PRINCIPAL('mquser1') AUTHRMV(PUT,GET)
删除一些权限

SET AUTHREC PROFILE(CHANNEL1) OBJTYPE(CHANNEL) PRINCIPAL('mquser1') AUTHADD(ALL) AUTHRMV(PUT)
授权除了put之外所有权限

OBJTYPE常用:CHANNEL\CLNTCONN\LISTENER\QUEUE\QMGR\RQMNAME\TOPIC等
权限常用:
NONE(没有权限)、ALL(所有权限)、ALLADM(管理员权限)、ALLMQI(MQI调用权限)
BROWSE(从队列查找消息)、CHG(改变对象的属性)
CLR(清除队列或话题)、DLT(删除)、CONNECT(应用连接队列管理器)、DSP(查看对象属性)
GET(读取消息)、INQ(队列信息查询)、PUT(发送消息)、CTRL(启停对象、ping操作)
SUB(订阅)、PUB(发布)

6-MQ常用运维场景及命令(未完继续)

查看队列管理器运行状态

dspmq  查看队列管理器运行(命令)
dsmmq -m JAVA.QUEUE.MANAGER.1 -o all 查看指定队列管理器的运行状态

DIS QMSTATUS ALL 查看队列管理器所有状态信息
属性:
    STATUS:运行状态,启动、运行、停顿
    CHINIT:通道初始器的运行状态
    CMDSERV:命令服务器状态
    CONNS:队列管理器的连接数量
    STARTDA:启动日期
    STARTTI:启动时间

查看队列运行状态

DIS QSTATUS(QUEUE1)
重点关注以下属性:
CURDEPTH:current depth,队列当前深度,队列中消息数量
UNCOMM:显示是否有未提交的队列操作(包括put和get)
QTIME:毫秒数,表明消息放入队列到被读出的间隔时间

IPPROCS: 目前打开该队列进行输入操作的句柄数量,不包括打开浏览的
OPPROCS:打开进行输出...

LGETDATE:队列管理器启动后,从该队列get消息的最近日期
LGETTIME:最近get时间
LPUTDATE:队列管理器启动后,put消息到该队列的最近日期
LPUTTIME:最近put时间

你可能感兴趣的:(MQ)