1. 创建队列管理器
crtmqm -q QMA
(-q表示QMA为默认队列管理器)
-ld (specify the directory for
Log Default Path)
for UNIX system, -g is used to
specify RestrictedMode.
2. 启动队列管理器
strmqm QMA
(对于默认队列管理器,则为strmqm )
3. 启动管理器平台
runmqsc QMA
4. 定义本地队列
define qlocal(queueA)
若用于队列管理器之间进行通信,这应为 define
qlocal(queue1) usage(xmitq)
5. 定义远程队列
define qremote(queue.remote)
rname(apple.queue) rqmname('queueB') xmitq(queue1)
(apple.queue为远程队列管理器queueB中的本地队列)
6. 定义发送端通道
define channel(queueA.queueB)
chltype(sdr) conname('192.168.1.90(1414)') xmitq(queueA)
trptype(tcp)
注: 针对HP-UX, MQ 5.3, 启动发送端通道时,可以使用
runmqchl -c
QUEUEA.QUEUEB -m QMA &
7. 定义接受方通道
define channel(queueA.queueB)
chltype(rcvr) trptype(tcp)
8. 更改侦听端端口号
alter
listener(system.default.listener.tcp) trptype(tcp) port(1415)
9. 启动侦听
start
listener(system.default.listener.tcp)
在命令行 c:\runmqlsr
注: 针对HP-UX, MQ 5.3,
启动侦听器时,应该
runmqlsr -t tcp &
可以使用-p指定端口号。
10. 列出侦听状态
display lsstatus(*)
11. 测试, 向队列中放入消息
amqsput queue_name
queue_manager_name
从队列中取出消息
amqsget queue_name
queue_manager_name
12. 在服务器方建立用于客户方链接的通道
define channel(channel2)
chltype(svrconn) trptype(tcp) mcauser(' ')
13. 在客户机方,使用MQSERVER定义客户机链接通道(如使用了Active Directory
服务支持,则可略过本步骤)
SET
MQSERVER=CHANNEL1/TCP/192.168.1.90(1414) //Windows
export
MQSERVER=’CHANNEL1/TCP/server-hostname(port)’ //linux
15. 测试, 向队列中放入消息
amqsputc queue_name
queue_manager_name
从队列中取出消息
amqsgetc queue_name
queue_manager_name
16. 关闭队列管理器
endmqm mqm_name
endmqm -i mqm_name
17. 结束所有侦听进程
endmqlsr -m
mqm_name
18. 查看WebSphere MQ版本号
dspmqver
19. 查看已有的MQ管理器
dspmq
20. 启动WebSphere MQ Explorer
strmqcfg
21. "dspmqfls" command to convert between real and transformed
object names.
22. setmqaut 设置权限
setmqaut -m
QMName -t queue -n QName -g GroupName +put -browse +get
使用
-remove参数, 删除权限
23. dspmqaut 查询某对象权限
24. dmpmqaut 查询记录权限(Inquire Authority Records)
配置一个能够通信的远程连接
以上讲述了MQ的基本命令操作,但只知道这些是没有实际意义的。MQ的最终目的是实现远程通信,所以下面就以一个具体的例子来说明如何实现远程连接。这个例子的目的是建立可以实现消息传递的一对MQ服务器,它们分别基于NT和UNIX平台。
首先在NT端建一队列管理器
crtmqm –q QM_NT
启动队列管理器
strmqm QM_NT
运行MQ控制台命令
runmqsc QM_NT
创建死信队列
DEFINE QL(NT.DEADQ) DEFPSIST(YES) REPLACE
更改队列管理器属性,设置其死信队列
ALTER QMGR DEADQ(NT.DEADQ)
创建进程定义
DEFINE PROCESS(P_NT)+
APPLTYPE(WINDOWSNT)+
APPLICID(’ runmqchl -c SDR_NT -m QM_NT’)
创建本地传输队列
DEFINE QL(QT_NT) USAGE(XMITQ) DEFPSIST(YES) +
INITQ(SYSTEM.CHANNEL.INITQ)+
PROCESS(P_NT) REPLACE
创建远程队列定义,对应于UNIX机器上的本地队列Q_UNIX,传输队列为QT_NT
DEFINE QREMOTE(QR_NT)+
RNAME(Q_UNIX) RQMNAME(QM_UNIX)+
XMITQ(QT_NT)
DEFINE CHANNEL(SDR_NT) CHLTYPE(SDR)+
CONNAME(‘10.10.10.2(1414)’) XMITQ(QT_NT) REPLACE
创建服务器连接通道
DEFINE CHANNEL(S_NT) CHLTYPE(SVRCONN) REPLACE
在UNIX端创建队列管理器
crtmqm –q QM_UNIX
启动队列管理器
strmqm QM_UNIX
添加侦听程序
修改/etc/services文件,加入一行:
MQSeries 1414/tcp #MQSeries channel listener
修改/etc/inetd.conf文件,加入一行(启动侦听程序)
MQSeries stream tcp nowait mqm /usr/lpp/mqm/bin/amqcrsta amqcrsta
–m QM_UNIX
运行以下命令,以使修改起作用
refresh –s inetd
运行MQ控制台命令
runmqsc QM_UNIX
创建死信队列
DEFINE QL(UNIX.DEADQ) DEFPSIST(YES) REPLACE
更改队列管理器属性,设置其死信队列
ALTER QMGR DEADQ(UNIX.DEADQ)
创建接收方通道,其名字必须与远程发送方相同
DEFINE CHANNEL(SDR_NT) CHLTYPE(RCVR) REPLACE
创建本地队列
DEFINE QL(Q_UNIX) DEFPSIST(YES) REPLACE
创建服务器连接通道
DEFINE CHANNEL(S_UNIX) CHLTYPE(SVRCONN) REPLACE
经过以上操作之后,远程连接的配置工作完成。接下来需要验证配置是否正确。
在NT端启动发送方通道
runmqchl –c SDR_NT –m QM_NT 或 start chl(SDR_NT)
从NT端发送消息到UNIX端
amqsput QR_NT QM_NT
在UNIX端接收消息
/usr/mqm/samp/bin/amqsget Q_UNIX QM_UNIX
若能收到消息,说明配置成功。
另,在NT下一般情况下在建立队列管理器时会自动建立侦听器,启动队列管理器时则会自动启动侦听程序。当然也可以手动配置侦听程序。
修改\winnt\system32\drivers\etc\services文件,在文件中加入一行:
MQSeries 1414/tcp #MQSeries channel listener
启动侦听程序
runmqlsr –t tcp –p 1414 –m QM_NT