MQ常用命令

常用的MQ命令

最近在配置MQ,记下了一些常用的MQ命令,如下:

创建队列管理器
crtmqm –q QMgrName
-q是指创建缺省的队列管理器

删除队列管理器
dltmqm QmgrName

启动队列管理器
strmqm QmgrName
如果是启动默认的队列管理器,可以不带其名字

停止队列管理器
endmqm QmgrName 受控停止

endmqm –i QmgrName 立即停止

endmqm –p QmgrName 强制停止

显示队列管理器
dspmq –m QmgrName

运行MQ命令
runmqsc QmgrName
如果是默认队列管理器,可以不带其名字

往队列中放消息
amqsput QName QmgrName
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字

从队列中取出消息
amqsget QName QmgrName
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字

启动通道
runmqchl –c ChlName –m QmgrName

启动侦听
runmqlsr –t TYPE –p PORT –m QMgrName

停止侦听
endmqlsr -m QmgrName

下面是在MQ环境中可以执行的MQ命令(即在runmqsc环境下可以敲的命令)

定义持久信队列
DEFINE QLOCAL(QNAME) DEFPSIST(YES) REPLACE

设定队列管理器的持久信队列
ALTER QMGR DEADQ(QNAME)

定义本地队列
DEFINE QL(QNAME) REPLACE

定义别名队列
DEFINE QALIAS(QALIASNAME) TARGQ(QNAME)

远程队列定义
DEFINE QREMOTE(QRNAME) +
RNAME(AAA) RQMNAME(QMGRNAME) +
XMITQ(QTNAME)

定义模型队列
DEFINE QMODEL(QNAME) DEFTYPE(TEMPDYN)

定义本地传输队列
DEFINE QLOCAL(QTNAME) USAGE(XMITQ) DEFPSIST(YES) +
INITQ(SYSTEM.CHANNEL.INITQ)+
PROCESS(PROCESSNAME) REPLACE

创建进程定义
DEFINE PROCESS(PRONAME) +
DESCR(‘STRING’)+
APPLTYPE(WINDOWSNT)+
APPLICID(’ runmqchl -c SDR_TEST -m QM_ TEST’)
其中APPLTYPE的值可以是:CICS、UNIX、WINDOWS、WINDOWSNT等

创建发送方通道
DEFINE CHANNEL(SDRNAME) CHLTYPE(SDR)+
CONNAME(‘100.100.100.215(1418)’) XMITQ(QTNAME) REPLACE
其中CHLTYPE可以是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。

创建接收方通道
DEFINE CHANNEL(SDR_ TEST) CHLTYPE(RCVR) REPLACE

创建服务器连接通道
DEFINE CHANNEL(SVRCONNNAME) CHLTYPE(SVRCONN) REPLACE

显示队列的所有属性
DISPLAY QUEUE(QNAME) [ALL]

显示队列的所选属性
DISPLAY QUEUE(QNAME) DESCR GET PUT
DISPLAY QUEUE(QNAME)MAXDEPTH CURDEPTH

显示队列管理器的所有属性
DISPLAY QMGR [ALL]

显示进程定义
DISPLAY PROCESS(PRONAME)

更改属性
ALTER QMGR DESCR(‘NEW DESCRIPTION’)
ALTER QLOCAL(QNAME) PUT(DISABLED)
ALTER QALIAS(QNAME) TARGQ(TARGQNAME)

删除队列
DELETE QLOCAL(QNAME)
DELETE QREMOTE(QRNAME)

清除队列中的所有消息
CLEAR QLOCAL(QNAME)

以下是一些高级配置的命令:

amqmcert                  配置SSL证书

amqmdain                配置windows上的MQ服务

crtmqcvx                    转换数据

dmpmqaut                转储对象权限管理

dmpmqlog                转储日志管理

dspmq                         显示队列管理器

dspmqaut                  显示打开对象的权限

dmpmqcap               显示处理程序容量和处理程序数

dspmqcsv                 显示命令服务器状态

dspmqfls                   显示文件名

dspmqtrc                   跟踪MQ输出(HP-UNIX LINUX Solaris)

dspmqrtn                   显示事务的详细信息

endmqcsv                 停止队列管理器上的命令服务器

strmqcsv                    启动队列管理器上的命令服务器

endmqtrc                   停止跟踪

rcdmqimg                  向日志写对象的映像

rcmqobj                      根据日志中的映像重新创建一个对象

rsvmqtrn                     提交或逆序恢复事务

 

 

 

下面的不一定正确:

[实施] MQ命令汇总

MQ命令

==================================================

---------
队列管理器-------------------------------

==================================================

1
、通过输入以下命令来创建名为 QM_APPLE 的缺省队列管理器:

         crtmqm -q QM_APPLE

         
此时会显示消息,告诉您已经创建了队列和缺省 WebSphere MQ 对象。



***
启动队列管理器:

通过输入以下命令来启动此队列管理器(因为新创建的队列管理器还没有启动):



strmqm



此时会显示一条消息,告诉您何时启动了该队列管理器。



注:如果启动指定的队列管理器则用strmqm QM_APPLE,如果是启动默认的队列管理器,可以不带其名字

-q是指创建缺省的队列管理器



注:删除队列管理器:dltmqm QM_APPLE



**
停止队列管理器

endmqm QmgrName
受控停止



endmqm –i QmgrName
立即停止



endmqm –p QmgrName
强制停止



**
显示队列管理器

dspmq –m QmgrName

运行MQ命令

runmqsc QmgrName

如果是默认队列管理器,可以不带其名字



注:dspmq 则是显示所有的队列管理器



==================================================

---------MQ
命令-------------------------------

==================================================

运行MQ命令

runmqsc QmgrName

如果是默认队列管理器,可以不带其名字

输入end命令来停止 MQSC



***队列管理*****

1
:创建本地队列:

define qlocal (Q1) replace



注:定义持久性队列:

DEFINE QLOCAL(QNAME) DEFPSIST (YES) REPLACE

2:
往队列中放消息

amqsput QName QmgrName

如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字

比如:amqsput Q1 QM_APPLE

3:
从队列中取出消息

amqsget QName QmgrName

如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字



注:在运行该命令时,不要先运行 runmqsc等。。而是在普通的命令窗口



4:清除队列中的所有消息

CLEAR QLOCAL
QNAME

注:该命令是运行在runmqsc命令之后



5:显示队列的所有属性

DISPLAY QUEUE
QNAME [ALL]



6
:删除队列

DELETE QLOCAL
QNAME

DELETE QREMOTE
QRNAME



***
传输队列管理

1:定义传输队列

DEFINE QLOCAL(Q_TRANSFER) USAGE(XMITQ)

注:Q_TRANSFER:传输队列名



下面定义一个输入队列并带触发器

DEFINE QLOCAL(Q_TRANSFER) USAGE(XMITQ) DEFPSIST(YES)  INITQ (SYSTEM.CHANNEL.INITQ) TRIGDATA (DP_RCHANNEL) REPLACE



注:

参数1:传输队列名称(Q_TRANSFER

参数5:触发器数据(DP_RCHANNEL),也就是触发后要启动的通道。





2:在传输入队列上定义触发器



DPCIS_Q_TRANSFER:传输队列

触发器数据:DP_RCHANNEL     即:发送通道,触发时启动该通道

alter qlocal(DPCIS_Q_TRANSFER) TRIGDATA('DP_RCHANNEL') TRIGTYPE(every) TRIGGER initq('SYSTEM.CHANNEL.INITQ')



****
远程队列管理

通过输入以下命令来定义远程队列定义:

define qremote (Q1) rname (Q1) rqmname(QM_APPLE) xmitq (QM_APPLE)



注:

参数1:队列名称(发送方远程队列名)

参数2:远程队列(接收方的本地接收队列名)

参数3:远程队列管理器(接收方队列管理器名)

参数4:传输队列(发送方传输队列名)



****通道管理*********

1
:创建接收方通道

DEFINE CHANNELSDR_ TEST)  CHLTYPERCVR)  REPLACE

define channel (Q_R_CHANNEL2) chltype(RCVR) replace

注:

参数1:接收方通道名称

replace:表示有该通道了替换

2:创建发送方通道

DEFINE CHANNEL (SDRNAME)  CHLTYPE (SDR)  CONNAME (‘100.100.100.215(1418)’)  XMITQ (QTNAME)  REPLACE

其中CHLTYPE可以是:SDRSVRRCVRRQSTRCLNTCONNSVRCONNCLUSSDRCLUSRCVR



define channel (DP_RCHANNEL) chltype(SDR) conname ('10.101.2.3 (1414)') xmitq(Q_TRANSFER) replace

注:

通道名称:DP_RCHANNEL (发送方通道的名称)

传输队列:Q_TRANSFER  (发送方传输队列的名称)



3
:启动通道

start channel (QM_ORANGE.QM_APPLE)



4
:查看通道状态

         dis chs(*)



*****
侦听器管理

1:定义侦听器

DEFINE LISTENER(TCPLS1) TRPTYPE(TCP) PORT(1414)  REPLACE

2
:启动侦听器

start listener(TCPLS1)

3:
显示侦听器信息

display listener(tcpls1)

==============================================



2
、通过输入以下命令来启用 MQSC 命令:创建本地队列

         runmqsc



         
输入以下命令:

         define qlocal (Q1)



         
此时会显示消息,告诉您已经创建了队列和缺省 WebSphere MQ 对象。

         
通过输入以下命令来停止 MQSC

         end

注:参数1:发送发本地队列名称



4、通过输入以下命令来定义接收通道:

         define channel (QM_ORANGE.QM_APPLE) chltype (RCVR) trptype (TCP)

5
、通过输入以下命令来定义发送方通道:

         define channel (QM_ORANGE.QM_APPLE) chltype (sdr) conname ('con-name') xmitq (QM_APPLE) trptype (tcp)

6
、通过输入以下命令来启动通道:

         start channel (QM_ORANGE.QM_APPLE)

7
、使用 MQSC 来将测试消息放入队列

         启动 amqsput 样本程序,如下所示:

          Linux 上,切换到 /opt/mqm/samp/bin 目录,然后输入命令:./amqsput Q1

         
Windows 上,输入命令:amqsput Q1

         
此时会显示以下消息:

         样本 amqsput0 启动

         目标队列为 Q1



         
在一行或多行上输入某些消息文本,然后按 Enter 键两次。此时会显示以下消息:

         样本 amqsput0 结束

8、启动 amqsget 样本程序,如下所示:

          Linux? 上,切换到 /opt/mqm/samp/bin 目录,然后输入命令:./amqsget Q1

         
Windows? 上,输入命令:amqsget Q1



9
、定义侦听器和启动侦听器。

DEFINE LISTENER(TCPLS1) TRPTYPE(TCP) PORT(1414)

其中 TCPLS1 为侦听器名称,TRPTYPE指定传输协议,PORT指定侦听端口。还有一个可选属性IPADDR,该属性指定在哪一个ip地址上提供侦听服务,不指定该属性意味着在本机的所有ip地址上提供该侦听服务。

启动侦听的命令如下:

START LISTENER(TCPLS1)

11
、显示队列的属性

         display queue (DPCDS_Q_RECEIVE)        

12
、创建触发

一般设置MQ触发器的目的有两种, 一是自动启动发送端通道, 二是监视队列消息, 一旦发现新的消息, 则利用触发器启动相应的处理进程

如果是利用触发器自动启动发送端通道, 使用方法1, 如果是利用触发器启动用户进程, 使用方法2



方法1

A
在传输通道上设置触发器, 打开触发器控制, 类型为"第一个"

B
初始队列为SYSTEM.CHANNEL.INITQ, 该队列为MQ专用的通道启动队列, 不需要手工启动其触发监视器

C 触发器数据为发送端通道名称, 例如 QAG.50

D
在发送端通道不活动的情况下, 在传输通道放入消息测试

方法2

A
创建一个触发启动队列, 其模板为SYSTEM.DEFAULT.INITIATION.QUEUE

runmqsc

define qlocal (MQ.TRIGER.INIQUEUE) like (SYSTEM.DEFAULT.INITIATION.QUEUE)



B
定义进程所谓进程就是触发器要触发的程序本例中进程名称:TRIGER.PROGRAM 应用程序标识为:"Notepad.exe"



C
在队列上设置触发器, 一般为本地队列, 打开触发器控制, 类型根据自己的需要选择"第一个", "每个" 还是 "根据消息数量"



D
初始队列选择A中创建的触发启动队列, 例如MQ.TRIGER.INIQUEUE, 进程名称设置为B中定义的进程名称, 例如TRIGER.PROGRAM



E
启动触发监视器 runmqtrm -m QAGWY -q MQ.TRIGER.INIQUEUE



F
在本地队列放入消息进行测试



方法2也可以完成方法1的工作, 只需要将进程定义中的应用程序标识改为 runmqchl -m QAGWY -c QAG.50 就可以了, MQ中提供了专用的通道启动队列,

而该队列不需要手工启动触发监视器, 因此方法1比方法2的步骤要少, 配置也简单, 所以在利用触发器自动启动发送端通道的情况下, 还是方法1更好.



以上测试在IBM WEBSPHERE MQ6.0测试通过.

***********************************************************************

***********************************************************************

WebSphere MQ
字符集问题

错误MQJE001: MQException 出现:完成代码是 2,原因为 2195 MQJE020: 队列管理器不支持 CCSID。解决方法:



一:MQEnvironment.CCSID = 1381;(在JAVA连接代码时指定一下字符集)



二:修改字符集设置

一般UnixLinux平台中MQ默认的字符集为819,Windows平台为1381,所以你必须改变其字符集,使两边的字符集相同。改变方法:

1.通过DOS进入MQ的安装目录,进入/bin下。假如要更改的队列管理器为A


2.
用指令“strmqm A”启动队列管理器A

3.用指令“runmqsc A”启动AMQSC


4.运行指令“ALTER QMGR CCSID(819)”“end”则修改字符集为

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值