政府机关中间件

MQ命令汇总

==================================================---------队列管理器-------------------------------==================================================1、通过输入以下命令来创建名为 QM_APPLE 的缺省队列管理器:          crtmq...显示全部
==================================================

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

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

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 CHANNEL(SDR_ TEST)  CHLTYPE(RCVR)  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可以是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。



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连接代码时指定一下字符集)



二:修改字符集设置

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

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


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

3.用指令“runmqsc A”启动A的MQSC。


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

查看其它 3 个回答stevenchen的回答

stevenchenstevenchenarchitectecs
非常感谢奥:)
2011-04-05
浏览552

回答者

stevenchen
architectecs

stevenchen 最近回答过的问题

回答状态

  • 发布时间:2011-04-05
  • 关注会员:1 人
  • 回答浏览:552
  • X社区推广