MQ配置文档说明手册.docx

上传人:b****5 文档编号:5233734 上传时间:2022-12-14 格式:DOCX 页数:10 大小:22.08KB
下载 相关 举报
MQ配置文档说明手册.docx_第1页
第1页 / 共10页
MQ配置文档说明手册.docx_第2页
第2页 / 共10页
MQ配置文档说明手册.docx_第3页
第3页 / 共10页
MQ配置文档说明手册.docx_第4页
第4页 / 共10页
MQ配置文档说明手册.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

MQ配置文档说明手册.docx

《MQ配置文档说明手册.docx》由会员分享,可在线阅读,更多相关《MQ配置文档说明手册.docx(10页珍藏版)》请在冰豆网上搜索。

MQ配置文档说明手册.docx

MQ配置文档说明手册

MQ配置文档说明手册

第一章中间件消息通信技术概要

一、中间件

   中间件,就是介于应用系统与系统软件之间的一类软件,它使用系统软件所提供的基础功能,衔接于应用系统的不同部分,能够达到资源共享和功能共享的目的。

   消息中间件,是中间件众多产品分类中一个重要部分。

它能够适用于任何需要进行网络通信的系统,负责建立网络通信的通道,进行数据或文件发送。

消息中间件的一个重要作用是可以实现跨平台操作,为不同操作系统上的应用软件集成提供服务。

二、几种通信技术的比较

1、CPI-C

   CPI-C是一种同步对话通信模式。

参加通信的一方发起一次对话,同时控制信息流动。

数据既可以由发送者传递到接受者,也可以反向流动。

   参加通信的两个程序需要跟踪对话的状态,如果异常发生导致连接中断,则需要发送方重建并恢复这次通话。

通信双方既可以处于主从地位,也可以处于对等地位。

也就是说,CPI-C既支持客户端-服务器环境,也支持对等通信方式。

   虽然CPI-C在一般情况下是一种同步通信类型,但是在一定环境中,如CICS,可以通过“临时数据队列”实现一定程度的异步。

   TCP/IP,SNA都支持CPI-C。

   由于需要应用程序参与错误的检测与恢复,CPI-C的编程接口相当复杂。

 

2、RPC

   RPC,即远程过程调用,也是一种同步,对话方式的类型。

一个调用程序向服务器提成申请,该调用被负责通信的转接器发往远端系统。

调用者与被调用者关系是固定的,很难实现对等通信。

与CPI-C一样,通信错误需要应用程序自己维护。

另外在申请服务得到响应之前,服务申请者被阻隔,这不仅是应用的瓶颈所在,更有可能遭受拒绝式服务攻击。

 

3、MQI(MessageQueueInterface)

   消息队列接口为程序提供了一种异步通信方式。

一个程序以一个队列作为中转与另一个程序相互通信,这个队列向对于该程序而言既可以是本地,也可以是远程。

当程序A与程序B进行通信时,A只需要将消息放入一条与B相通信的队列即可,至于消息何时,以何种协议,何种方式到达程序B与A没有关系。

底层的通信细节被接口所覆盖,甚至通信错误的恢复也由队列管理器代劳了,应用程序自身感受不到通信的发生。

   由于通信方式和使用的协议无关,因而可以使用各种标准协议,比如TCP/IP,SNA或者其他局域网协议。

   当程序A向B发送消息的时候,程序B不需要处于运行状态,消息队列负责了消息的转达。

而且一个程序可以通过不同的队列与多个程序进行通信。

 

三、WebsphereMQ简介

   WebsphereMQ是IBM公司的商业通信中间件。

它提供一个具有工业标准,安全、可靠的消息传输系统,用以控制和管理一个集成的商业应用。

WebsphereMQ基本由一个消息传输体系和一套应用程序接口组成。

   WebsphereMQ主要包含以下资源:

1、   消息:

消息就是一个信元单位。

消息类型包含请求消息(RequestMessage)、应答消息(ReplyMessage)、报告消息(ReportMessage)、报文消息(DatagramMessage)。

另外,还有一类特殊的消息叫做触发消息,它是触发机制的重要组成部分。

消息包含两部分构成:

消息描述符与应用程序数据。

消息描述符标示消息,并包含其他控制信息,如消息类型和消息优先级;应用程序数据是消息的主体,它的内容与结构含义由使用它的程序定义。

2、   队列

队列是消息的存储场所。

消息存放在队列中,应用程序可以相互独立的运行,以不同的速度、在不同的时间地点进行消息通信。

队列按照功能划分,主要包含十个大类:

本地队列、远程队列、传输队列、动态与模板队列、启动队列、群集传输队列、死信队列、命令队列、回复队列与别名队列。

3、   消息传输系统

确保队列之间的消息传递。

包括队列管理与调度、消息传达,并保证网络故障后的恢复。

传输系统由队列、队列管理器、通道、进程、群集以及其他部分组成。

队列管理器是队列和其他对对象的容器。

WebsphereMQ的每一个部分都属于一个队列管理器,它是一个基本独立的执行单元,应用程序通过MQI编程接口向队列管理器申请服务。

通道,是一种提供从一个队列管理器到另外一个队列管理器的通信途径。

它通过消息通道代理(MessageChannelAgents)把两个队列管理器连接起来。

消息通道可以分为6种类型:

发送通道(Sender)、接受通道(Receiver)、服务器通道(Server)、请求器通道(Requester)、群集发送通道(ClusterSender)和群集接受通道(ClusterReceiver)。

除了消息通道,还有一种特殊的通道,称为MQI通道。

MQI通道是WebsphereMQ客户端和服务器上的队列管理器的通信通道,当客户应用程序发出MQCONN或MQCONNX调用时,才开始建立连接。

消息通道与MQI通道主要存在两点差别。

首先,MQI是双向通道,既可以发送请求,也可以接受响应,而消息通道只能进行单向数据通信;另外,MQI通道的通信是同步的,当MQI请求从客户端发送到服务器时,WebsphereMQ的客户端在发送下一个请求必须等待来自服务器的响应。

而消息通道的数据传输的异步的,与时间无关。

4、   应用程序接口

消息系统与应用程序之间通过一系列WebsphereMQAPI来实现。

API只有14个调用,2个关键字:

PUT和GET。

第二章IBMMQSeries的触发机制

一、触发器原理

   触发(Triggering),是一种自动启动应用程序的机制。

队列管理器把某种条件称为触发事件。

如果队列被设置为触发类型,并且触发事件发生了,那么队列管理器将发送一个触发消息到一个称作启动队列的队列中。

触发消息被放置到启动队列的过程意味着产生了触发事件。

   处理队列管理器中的消息是触发监控程序(Trigger-MonitorApplication),他的工作是读取触发消息并根据触发消息的信息做出相应的处理。

触发监控程序没有什么特殊,它只不过是启动队列读取消息的应用程序。

当队列管理器发现由一条消息到达被触发的队列之后,它产生的触发消息将被存放到启动队列中,触发监控程序将从启动队列中取出触发消息,并根据触发消息中的内容,启动相应的消息处理程序来处理被触发队列中的消息。

   

   触发所涉及的对象如下:

   1应用队列:

一个本地队列并设置为可触发。

当触发条件满足时,将会产生触发消息。

   2进程定义:

一个应用队列可能由一个进程定义对象和它关联。

进程定义中包含应用程序的信息。

该应用程序负责从应用队列中取出消息。

   3传输队列:

如果用触发方式来启动通道,则需要一个传输队列。

在传输队列的TriggerData属性中设置为将被启动的通道名,这将省略进程的定义。

   4触发事件:

它是一种引起队列管理器产生触发消息的事件。

   5触发消息:

当触发事件发生时,队列管理器将产生触发消息。

触发信息来自于应用队列和于应用队列关联的进程定义,它包含了将要被启动的程序名。

   6启动队列:

一个本地队列。

被用来存发触发消息的队列。

一个队列管理器可用拥有多个启动队列。

一个启动队列可以为多个应用队列服务。

   7触发监控器:

是一个持续运行的程序,当一个触发消息到达启动队列时,触发监控器获取触发消息,并利用触发消息中的信息,启动应用程序来处理应用队列中的消息,并把触发消息头发送传递给应用程序,消息头中包含应用队列名。

   

   在所有平台上,都有一个特殊的触发监控器叫做通道启动器(ChannelInitator),它的作用就是启动通道。

二、触发类型

1、EVERY:

   应用队列中每接受到一个消息时,都将产生触发消息。

如果应用程序仅仅处理一个消息就结束,可采用这种触发类型。

2、FIRST:

   应用队列中消息从0变为1时会触发事件。

如果当队列中的一个消息到达时启动程序,直到处理完所有消息才结束,则采用这种触发类型。

3、DEPTH:

   应用队列中消息数目和TriggerDepth(引起触发事件发生时,队列中的消息数目)属性值相同时,才会产生触发事件。

当一系列请求的回复都收到时,才启动应用程序,则可以采用这种方法。

   需要注意的时,当DEPTH属性值为0的时候,实际上就形成了同步通信。

另外,当采用Depth触发时,产生触发消息以后,队列将被修改为非触发方式,如果需要再次触发,需要重新设置成允许触发。

   一般而言,在实际应用中,如果通道设置成触发方式,触发类型往往设置成为FIRST和DEPTH。

 

三、触发器工作流程

1、   本地或远程应用程序A,往应用队列(ApplicationQueue)中PUT了一条消息。

2、   当队列原来深度为0时(队列为空),这是PUT一条消息到队列中将形成触发事件,同时产生一条触发消息,触发消息中将包含进程定义中的信息。

3、   队列管理器创建触发消息,并把它PUT入与应用队列相关的启动队列InitiationQueue。

4、   触发监控器(TriggerMonitor)从启动队列(InitiationQueue)中GET触发消息。

5、   触发监控器处理触发消息,发出启动应用程序B的命令。

6、   应用程序B打开应用队列(ApplicationQueue),并处理队列中的消息。

第三章MQ配置说明文档

安装系统后,以administrator进入;

安装完,自动生成mqm组;

将administrtor加入mqm组,或定义mqm用户,将mqm用户加入mqm和admin组;

重启,以administrator(或mqm)进入;

需要更改系统配置文件,使得1414端口被监听(不过启动通道之前仍需启动监听器)

进入系统目录/winnt/system32/drivers/etc/services,

加入MQSeries   1414/tcp    #MQSerieschannellistener

如果实在AIX环境下,则添加字符串改为

MQSeriesstreamtcpnowaitroot/usr/lpp/mqm/bin/amqcrstaamqcrsta–mAIX

********root为mq用户名,AIX为mq管理器******

改好后,refresh–sinetd

最后,管理器的CCSID要一样,DISQMGR***查看***

ALTERQMGRCCSID(437)***437为西文字符集***

下面的步骤需要在DOS环境下进入MQ的安装目录/bin

示例一(本机SDR通道,接受端RCVR通道)

在发送方A(本机:

127.0.0.1)

1)建立队列管理器QMA:

crtmqmQMA

2)strmqmQMA

   runmqscQMA

3)定义本地传输队列:

defineqlocal(QAQB)usage(xmitq)defpsist(yes)REPLACE

4)创建远程定义:

defineqremote(QR.TOB)rname(LQB)rqmname(QMB)xmitq(QAQB)REPLACE

//远程定义(本地队列管理器):

QR.TOB

//远程队列名称:

LQB

//远程队列管理器名称:

QMB

//传输队列名称:

QAQB

5)定义死信队列

  ALTERQMGRDEADQ(QMA.DEADQ)

  DEFINEQL(QMA.DEADQ)REPLACE

6)定义发送通道:

definechannel(A.TO.B)chltype(SDR)conname('192.168.0.198(1414)')xmitq(QAQB)trptype(tcp)

//definechannel(A.TO.B)chltype(SDR)conname('127.0.0.1(1414)')xmitq(QAQB)trptype(tcp)REPLACE

7)end   //退出MQSC命令环境

8)runmqlsr–tTCP–MQMA //启动监听器

9)runmqchl–cA.TO.B–mQMA

//注意:

启动此步之前,需要保证QMB上的通道定义完成并且侦听器在QMB上已经启动

在接收方B:

(假设为:

192.168.0.198:

1414/127.0.0.1:

1414)

1)建立队列管理器QMB:

crtmqmQMB

2)strmqmQMB

3)RUNMQSCQMB

4)定义死信队列

  ALTERQMGRDEADQ(QMB.DEADQ)

  DEFINEQL(QMB.DEADQ)REPLACE

5)定义本地队列LQB:

defineqlocal(LQB)DEFPSIST(YES)REPLACE

6)创建接收通道:

definechannel(A.TO.B)chltype(RCVR)trptype(tcp)REPLACE

7)end   //退出MQSC命令环境

——————测试验证——————

 AMQSPUTQR.TOBQMA

//在QMA队列管理器的QR.TOB远程定义中输入一些消息数据

 AMQSGETLQBQMB

 //在QMB队列管理器的LQB本地消息队列中读取通过管道A.TO.B传递过来的数据

 

关于通道:

通道是MQ的关键,主要包括手动方式启动和自动方式(触发)启动。

手动方式:

手动方式维护有两个通道参数值得注意:

1)DISCINT(DisconnectInterval,断开间隔)

当传输队列中没有消息要传送时,发送方通道(SDR)、服务器通道(SVR)将在等待了该参数指定的时间间隔后断开连接,停止通道。

该参数以秒为单位,定义新的通道时,如果没有特别指定,该参数会继承系统对象的属性,设为6000秒,约两个小时。

亦通道连续两个小时没有消息发送后就会停止。

DISCINT参数设定为0,通道永远不会停止。

2)HBINT(HeartBeatInterval,心跳间隔)

当传输队列中没有消息要传送时,发送方通道(SDR)、服务器通道(SVR)定时向对方发送心跳测试信号,双方通道借这个信号作消息发送事务的同步(quiesce)。

通常这个参数的值要比DISCINT参数的值小很多,让通道程序有机会在停止之前作多次的事务同步较验。

假如系统管理员为了避免反复重新启动通道而把DISCINT参数设定为0,但通道运行期间网络线路发生了故障,通讯双方不能交换心跳信号,通道也会停止,仍然要求系统管理员监控网络线路状态和通道状态,在网络线路收复后重新启动。

也可以编写专门的监控程序自动执行这些工作,但都比较复杂。

系统管理员不能因为交换心跳信号失败会导致通道停止就把HBINT设为0或设为极大的值,当有消息要通过通道发送出去,但网络线路又发生故障时,发送通道会停止,但接收通道不会停止。

所以下次系统管理员再启动通道时会发现MQ报告出错信息“远程节点不可用或资源不足”,这不是因为远程节点的连接有问题,或内存资源不足,而是因为远程节点上的接收通道没有停止,启动发送通道时发现对方节点上同名的通道还在运行,就禁止本地的发送通道启动。

系统管理员只好在远程节点上停止接收通道(用STOPCHANNEL命令)。

 

正常情况下并不推荐使用STOPCHANNEL命令,该命令把通道置于STOPPED状态,实际上是不可用状态。

为了重新使用该通道,系统管理员要输入STARTCHANNEL命令,但这条命令并没有真正地启动通道,要在发送方输入STARTCHANNEL命令才能启动通道。

必须注意的是,STOPCHANNEL命令与STARTCHANNEL命令对接收通道都是没有实际意义的,只是修改了通道的状态。

 

常用命令

创建队列管理器

crtmqm–qQMgrName

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

删除队列管理器

dltmqmQmgrName

启动队列管理器

strmqmQmgrName

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

停止队列管理器

endmqmQmgrName受控停止

endmqm–iQmgrName立即停止

endmqm–pQmgrName强制停止

显示队列管理器

dspmq–mQmgrName

运行MQSeries命令

runmqscQmgrName

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

往队列中放消息

amqsputQNameQmgrName

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

从队列中取出消息

amqsgetQNameQmgrName

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

启动通道

runmqchl–cChlName–mQmgrName

启动侦听

runmqlsr–tTYPE–pPORT–mQmgrName

停止侦听

endmqlsr-mQmgrName

MQSeries命令

定义死信队列

DEFINEQLOCAL(QNAME)DEFPSIST(YES)REPLACE

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

ALTERQMGRDEADQ(QNAME)

定义本地队列

DEFINEQL(QNAME)REPLACE

定义别名队列

DEFINEQALIAS(QALIASNAME)TARGQ(QNAME)

远程队列定义

DEFINEQREMOTE(QRNAME)+

RNAME(AAA)RQMNAME(QMGRNAME)+

XMITQ(QTNAME)

定义模型队列

DEFINEQMODEL(QNAME)DEFTYPE(TEMPDYN)

定义本地传输队列

DEFINEQLOCAL(QTNAME)USAGE(XMITQ)DEFPSIST(YES)+

INITQ(SYSTEM.CHANNEL.INITQ)+

PROCESS(PROCESSNAME)REPLACE

创建进程定义

DEFINEPROCESS(PRONAME)+

DESCR(‘STRING’)+

APPLTYPE(WINDOWSNT)+

APPLICID(’runmqchl-cSDR_TEST-mQM_TEST’)

其中APPLTYPE的值可以是:

CICS、UNIX、WINDOWS、WINDOWSNT等

创建发送方通道

DEFINECHANNEL(SDRNAME)CHLTYPE(SDR)+

CONNAME(‘100.100.100.215(1418)’)XMITQ(QTNAME)REPLACE

其中CHLTYPE可以是:

SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。

创建接收方通道

DEFINECHANNEL(SDR_TEST)CHLTYPE(RCVR)REPLACE

创建服务器连接通道

DEFINECHANNEL(SVRCONNNAME)CHLTYPE(SVRCONN)REPLACE

显示队列的所有属性

DISPLAYQUEUE(QNAME)[ALL]

显示队列的所选属性

DISPLAYQUEUE(QNAME)DESCRGETPUT

DISPLAYQUEUE(QNAME)MAXDEPTHCURDEPTH

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

DISPLAYQMGR[ALL]

显示进程定义

DISPLAYPROCESS(PRONAME)

更改属性

ALTERQMGRDESCR(‘NEWDESCRIPTION’)

ALTERQLOCAL(QNAME)PUT(DISABLED)

ALTERQALIAS(QNAME)TARGQ(TARGQNAME)

删除队列

DELETEQLOCAL(QNAME)

DELETEQREMOTE(QRNAME)

清除队列中的所有消息

CLEARQLOCAL(QNAME)

常用补充命令

显示队列管理器dspmq

显示文件名dspmqfls

启动本地队列管理器strmqm

结束本地队列管理器endmqm

启动通道启动进程runmqchi/runmqchl

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1