-
MQ
通讯机制
应用系统
消息中间件管理器
( MQ Server)
本地队列
(接收队列)<
/p>
远程队列
(
发送队列)
< br>通
道
远程队列
(发送队列)
p>
本地队列
(接收队列)
消息中间件管理器<
/p>
( MQ Server)
应用系统
<
/p>
一.
MQ
基本操作
MQ
中有几个很
重要的组件:队列管理器(
QueueManager
)
、队列(
Queue
)
和通道(
Channel
)
。其基本
的操作方法如下:
创建队列管理器
crtmqm
–
q QMgrName
-q
是指创建缺省的队列管理器
删除队列管理器
dltmqm QmgrName
启动队列管理器
strmqm QmgrName
如果是启动默认的队列管理器,可以不带其名字
通
道
停止队列管理器
endmqm QmgrName
受控停止
endmqm
–
i QmgrName
立即停止
endmqm
–
p
QmgrName
强制停止
显示队列管理器
dspmq
–
m
QmgrName
运行
MQSeries
命令
runmqsc QmgrName
如果是默认队列管理器,可以不带其名字
往队列中放消息
amqsput QName QmgrName
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字
从队列中取出消息
amqsget QName QmgrName
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字
启动通道
runmqchl
–
c ChlName
–
m QmgrName
启动侦听
runmqlsr
–
t
TYPE
–
p PORT
–
m QMgrName
停止侦听
endmqlsr -m QmgrName
MQSeries
命令
定义死信队列
DEFINE QLOCAL
(
QNAME
)
DEFPSIST
(
YES<
/p>
)
REPLACE
设定队列管理器的死信队列
ALTER QMGR DEADQ
(
QNAME
)
定义本地队列
DEFINE QL
(
QNAME
)<
/p>
REPLACE
定义别名队列
DEFINE QALIAS(QALIASNAME) TARGQ(QNAME)
远程队列定义
DEFINE QREMOTE
(
QRNAME
)
+
RNAME
< br>(
AAA
)
RQMNAME<
/p>
(
QMGRNAME
)
< br> +
XMITQ
(
QTNAME
)
定义模型队列
DEFINE QMODEL
(
< br>QNAME
)
DEFTYPE
(
TEMPDYN
)
定义本地传输队列
DEFINE QLOCAL(QTNAME) USAGE(XMITQ) DEFPSIST(YES) +
INITQ
(
)
+
PROCESS(PROCESSNAME) REPLACE
创建进程定义
DEFINE PROCESS
(
PRONAME
)
+
DESCR
(‘STRING’)
+
APPLTYPE
(
WI
NDOWSNT
)
+
APPLICID
(’ runmqchl
-c
SDR_TEST -
m QM_ TEST’)
其中
APPLTYPE<
/p>
的值可以是:
CICS
、
UNIX
、
WINDOWS
、
WINDOWSNT
等
创建发送方通道
DEFINE CHANNEL
(
SDRNAME
)
CHLTYPE
(
SD
R
)
+
CONNAM
E
(‘100.100.100.215(1418)’)
X
MITQ
(
QTNAME
)
REPLACE
其中
CHLTYPE
可以是:
SDR
、
SVR
、
RCVR
、
RQSTR
、
CLN
TCONN
、
SVRCONN
、
CLUSSDR
和
CLUSRCVR
。
创建接收方通道
DEFINE CHANNEL
(
SDR_
TEST
)
CHLTYPE
(
RCVR
)
REPLACE
创建服务器连接通道
DEFINE CHANNEL
(
SVRCONNNAME
p>
)
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 Q
LOCAL
(
QNAME
)
PUT
(
DISABLED
)
ALTER QALIAS
(
QNAME
)
TAR
GQ
(
TARGQNAME
)
删除队列
DELETE QLOCAL
(
QNAME
)
DELETE QREMOTE
(
QRNAME
)
清除队列中的所有消息
CLEAR QLOCAL
(
QNAME
)
修改
MQ
的字符集(
437
,
1381
,
891
)
p>
CCSID:437 = ASCII/GB2312 .
CCSID:500 = EBCDIC/IBM935.
CCSID:1381 = UNICODE
runmqsc
队列管理器名称
alter
qmgr ccsid(437)
end
二.配置一个能够通信的远程连接
以上讲述了
MQ
的基本命令操作,但只
知道这些是没有实际意义的。
MQ
的
最
终目的是实现远程通信,
所以下面就以一个具体的例子来说明如何实现远程连
接。这个例子的目的是建立可以实现消息传递的一对
MQ
< br>服务器,它们分别基于
NT
和
U
NIX
平台。
首先在
NT
端建一队列管理器
crtmqm
–
q QM_NT
启动队列管理器
strmqm QM_NT
运行
MQ
控制台命令
runmqsc QM_NT
创建死信队列
DEFINE QL() DEFPSIST(YES) REPLACE
更改队列管理器属性,设置其死信队列
ALTER QMGR DEADQ
(
)
创建进程定义
DEFINE PROCESS
(
P_NT
)
+
APPLTYPE
< br>(
WINDOWSNT
)
+
APPLICID
(’ runmqchl
-c SDR_NT -
m
QM_NT’)
创建本地传输队列
DEFINE QL(
QT_NT
)
USAGE(XMITQ) DEFPSIST(YES) +
INI
TQ
(
)
+
PROCESS(P_NT) REPLACE
创建远程队列定义,对应于
UNIX
机器上的本地队列
Q_UNIX
,传输队列为
QT_NT
DEFINE
QREMOTE
(
QR_NT
)
+
RNAME
(
Q_UNIX
)
RQMNAME
(
QM_UNIX
)
+
XMITQ
(
QT_NT
)
< br>创建发送方通道,
其传输队列为
QT_NT
,
远程主机地址为
10.10.10.2
,
侦
听端口为
1414
DEFINE CHANNEL
(
SDR_NT
)
CHLTYPE
(
SDR
)
+
CONNAME
(‘10.10.10.2(1414)’)
XMITQ
(
QT_NT
)
REPLACE
创建服务器连接通道
DEFINE CHANNEL
(
S_NT
)
CHLTYPE
(
SVRCO
NN
)
REPLACE
在
UNIX
端创建队列管理器
crtmqm
–
q QM_UNIX
启动队列管理器
strmqm QM_UNIX
添加侦听程序
修改
/etc/services
文件,加入
一行:
MQSeries 1414/tcp
#MQSeries channel listener
修改
/etc/
文件,加入一行(启动侦听程序)
MQSeries
stream
tcp
nowait
mqm
/usr/lpp/mqm/bin/amqcrsta
amqcrsta
–
m
QM_UNIX
运行以下命令,以使修改起作用
refresh
–
s inetd
运行
< br>MQ
控制台命令
runmqsc QM_UNIX
创建死信队列
DEFINE QL() DEFPSIST(YES) REPLACE
更改队列管理器属性,设置其死信队列
ALTER QMGR DEADQ
(
)
创建接收方通道,其名字必须与远程发送方相同
DEFINE CHANNEL
(
SDR_NT
)
CHLTYPE
(
RCVR
)
REPLACE
创建本地队列
DEFINE QL
(
Q
_UNIX
)
DEFPSIST(YES) REPLACE
创建服务器连接通道
DEFINE CHANNEL
(
S_UNIX
)
CHLTYPE
(
SVRCONN
)
REPLACE
经
过以上操作之后,
远程连接的配置工作完成。
接下来需要验证配
置是否