首页 > 代码库 > 我的MQ笔记

我的MQ笔记

1、安装IBM MQ

1.1、安装先决条件:

(1)WebSphere  Eclipse  Platform  V3.01

(2)为Windows域用户配置WebSphere MQ用户

1.2、安装程序:

(1)接受协议:

 

(2)选择安装类型为‘定制’:

 

(3)更改程序文件夹位置:

 

(4)数据文件夹位置:

 

(5)IBM Global Security Kit文件夹位置:

 

(6)日志文件夹位置:

 

(7)将各功能选项全部安装,如图:(其中MQ资源管理器是默认安装的)

 

(8)开始安装

 

(9)安装完毕后,退出系统;

1.3、安装MQ补丁:

(1)安装补丁前需要做以下动作:

Endmqm  -p  队列管理器名称

Endmqlsr  -m  队列管理器名称

停止MQ服务

 

 

(2)MQ补丁安装完成后,它类似Windows补丁,可手动移除补丁,如图:

 

 

 

 

 

 

 

 

2、IBM MQ对象介绍

2.1、消息:

通信程序使用消息来交换数据,发送程序如果构造一条消息,则该消息应包含:

- 要发送的数据

- 消息头(控制信息,例如:消息标识和返回地址)

    MQ传递的消息有两部分组成:消息描述符(MessageDescriptor)和应用数据(ApplicationData)。默认最大传递的消息大小是4MB,可以根据需要进行设置,最大可到100MB

 

2.2、队列:

队列是消息在被程序接收之前的存储位置,发送程序将消息放到适当的队列中,当接收程序就绪时,它就从队列中获取消息。

有四种类型:本地队列(LocalQueue)、远程队列(RemoteQueue)、别名队列(AliasQueue)和模型队列(ModelQueue),最常用到的是本地队列和远程队列。

 

2.3、通道:

提供从一个队列管理器到其他队列管理器的数据传输路径。通道类型有若干种,其中常用的是发送方通道(SenderChannel)和接收方通道(ReceiverChannel)

 

2.4、队列管理器:

每台主管队列的计算机都需要队列管理器。每个队列管理器都具有唯一的名称并且管理在该队列管理器上创建的队列(这些队列称为本地队列)。

每个本地队列也都具有名称,该名称与它的队列管理器的名称一起提供了消息可以被发送到的唯一地址。

 

2.5、MQ资源管理器:

WebSphere MQ 资源管理器可以管理在 Windows、Unix、Linux、OS/400、z/Series 和其它平台上运行的远程队列管理器。

 

 

 

3、MQ  mqsc命令格式:

MQSC 命令 DEFINE(用来定义对象,如队列)、DISPLAY(用来显示对象属性,如队列中的消息的数目)和 CLEAR(用来从队列中除去消息)。具体说明见下表:

3.1、创建队列管理器

crtmqm –q QMgrName

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

Eg:   crtmqm –q  sunny

 

3.2、删除队列管理器

dltmqm QmgrName

eg:  dltmqm  sunny

 

3.3、启动队列管理器

strmqm QmgrName

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

Eg: Strmqm  QM_8

 

3.4、停止队列管理器

(1)endmqm QmgrName 受控停止

(2)endmqm –i QmgrName 立即停止    eg:  endmqm  -i  QM_8

(3)endmqm –p QmgrName 强制停止    eg:  endmqm  -p   QM_8

 

3.5、显示队列管理器

dspmq –m QmgrName

eg:  dspmq –m  QM_0

C:\Documents and Settings\sfexpress>dspmq -m QM_NT

QMNAME(QM_NT)                                             STATUS(正在运行)

 

3.6、往队列中放消息

amqsput QName QmgrName-------------------将输入的信息存入QName队列中

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

egamqsput   RQ_8  QM_0  (往远程队列中存放消息)

 

3.7、从队列中取出消息

amqsget QName QmgrName -------------------从QName队列中取出消息

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

Eg amqsget LQ_8 QM_8  (从本地队列中取消息)

 

3.8、启动通道

runmqchl –c ChlName –m QmgrName

egrunmqchl -c 8.0 -m QM_8  (启动QM_8队列管理器下的8.0通道)

 

3.9、启动侦听

runmqlsr –t TYPE –p PORT –m QMgrName

 

3.10、停止侦听

endmqlsr -m QmgrName

eg:endmqlsr -m QM_8-------停止队列管理器QM_8上的侦听器

 

3.11、运行MQSeries命令

runmqsc QmgrName

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

egrunmqsc  QM_8

 

(1) 定义死信队列

DEFINE QLOCAL(QNAME) DEFPSIST(YES) REPLACE

Eg: define  QLOCAL(Q_LOCAL)  DEFPSIST(YES)  REPLACE---新增一条本地队列Q_LOCAL,设定持久性(由参数DEFPSIST确定)

 

设定队列管理器的死信队列

ALTER  QMGR  DEADQ(QNAME)

Egalter  QMGR  DEADQ(Q_LOCAL)----Q_LOCAL设置为系统默认队列管理器的死信队列;

 

(2)定义本地队列

DEFINE QL(QNAME) REPLACE ------死信队列为本地队列的一种形式

(3)定义别名队列

DEFINE QALIAS(QALIASNAME) TARGQ(QNAME)

 

(4)远程队列定义

DEFINE QREMOTE (QRNAME)  RNAME (AAA)  RQMNAME (QMGRNAME) XMITQ(QTNAME)

说明:    QREMOTE (QRNAME)---指本地的远程队列名称

RNAME (AAA)----指的是接收端本地队列名称

RQMNAME (QMGRNAME) -----接收端队列管理器名称

XMITQ(QTNAME)---------本地传输队列名称

       

(5)定义本地传输队列

DEFINE QLOCAL(QTNAME) USAGE(XMITQ) DEFPSIST(YES) INITQ(SYSTEM.CHANNEL.INITQ)   PROCESS(PROCESSNAME) REPLACE

Eg:

 

(6)创建进程定义

DEFINE PROCESS(PRONAME)  DESCR(‘STRING’)  APPLTYPE(WINDOWSNT) APPLICID(’ runmqchl -c SDR_TEST -m QM_ TEST’)

其中APPLTYPE的值可以是:CICS、UNIX、WINDOWS、WINDOWSNT等

 

(7)创建发送方通道

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

其中CHLTYPE可以是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。

Eg  XMITQ(QTNAME)--------代表传输队列

 

(8)创建接收方通道

DEFINE CHANNEL(SDR_ TEST) CHLTYPE(RCVR) REPLACE

 

(9)创建服务器连接通道

DEFINE CHANNEL(SVRCONNNAME) CHLTYPE(SVRCONN) REPLACE

 

(10)显示队列的所有属性

DISPLAY QUEUE(QNAME) [ALL]

 

(11)显示队列的所选属性

DISPLAY QUEUE(QNAME) DESCR GET PUT

DISPLAY QUEUE(QNAME)MAXDEPTH CURDEPTH

 

(12)显示队列管理器的所有属性

DISPLAY QMGR [ALL]

 

(13)显示进程定义

DISPLAY PROCESS(PRONAME)

 

(14)更改属性

ALTER QMGR DESCR(‘NEW DESCRIPTION’)

ALTER QLOCAL(QNAME) PUT(DISABLED)

ALTER QALIAS(QNAME) TARGQ(TARGQNAME)

 

(15)删除队列

DELETE QLOCAL(QNAME)

DELETE QREMOTE(QRNAME)

 

(16)清除队列中的所有消息

CLEAR QLOCAL(QNAME)

 

 

 

4、MQ的远程队列管理

4.1 在客户机上建立服务器连接通道

在被管理客户端建立专用的‘服务器连接’通道,如下:

runmqsc QM_0

define channel(DC.SVRCONN) CHLTYPE(SVRCONN) MCAUSER(‘000119‘)

alter qmgr CCSID(1381)

endmqm -p QM_0

strmqm QM_0

strmqcsv QM_0

 

说明:

(1)channel(DC.SVRCONN) CHLTYPE(SVRCONN) -----表明建立的DC.SVRCONN类型为服务器连接;

(2)MCAUSER-----管理队列管理器上的操作用户在被管理队列管理器上存在并且有管理MQ的权限,需要修改服务器连接通道DC.SVRCONN的MCAUSER属性为管理队列管理器上的操作用户;

    

 

4.2 在管理服务端上的操作步骤:

(1)       在标题的‘队列管理器’上点击右键,选择显示/隐藏队列管理器;

 

(2)       点‘添加’按钮,输入被管理客户端的队列管理器名称,如:QM_UNIX,连接方式为直接连接;

 

(3)       输入被管理客户端的信息,如主机名/ip地址,端口号(为被管理客户端侦听端口),服务器连接通道名称,如下:

 

(4)       点击完成,开始连接,连接成功后,在队列管理器中显示多出一个客户端的队列管理器,如图:

 

其中的服务器连接通道S_UNIX显示状态也为‘正在运行’

 

 

 

5、MQ对象的备份与恢复

 

5.1 备份

1、将附件MS03.ZIP解压,DOS模式下进入MS03目录

 

2、备份过程:

saveqmgr –m 队列管理名 –f 文件名.tst -s

 

说明:

----m队列管理名

----f 备份信息将写入的文本文件

----s 系统信息不需要导出

 

eg: 

5.2 恢复

恢复过程如下:

(1)创建队列管理器:crtmqm 队列管理名

 

(2)启动队列管理器:strmqm 队列管理名

 

(3)恢复通道队列定义:runmqsc 队列管理名 < 文件名.tst  > 日志文件.txt

 

eg:  runmqsc QM_UNIX < d:\backup.tst  > d:\log.txt 

 

http://blog.163.com/microsunny_lin/blog/static/24266622200764112832488/