WEBSPHEREMQ培训课程2019/10/201课程内容说明MQSeries®2019/10/2025部MQ概览常用MQ概念MQ日常检查和监控MQ应急操作MQ问题定位MQSeries®2019/10/203常用MQ概念MQSeries®2019/10/204常用MQ概念队列管理器队列消息通道MQI通道消息消息触发MQSeries®2019/10/205队列管理器队列管理器是MQ消息队列基础架构中最核心的组件,队列管理器可看成是队列和其他对象的容器。WebSphereMQ中的每一个队列都属于一个队列管理器,队列管理器是为应用程序和WebSphereMQ部件(一些管理工具)提供对队列管理中对象的访问。一个队列管理器是WebSphereMQ中的一个基本的独立的执行单元。一台机器上可以运行一个或多个队列管理器。队列管理器拥有每个队列。队列管理器负责维护它所拥有的队列,以及将它接收到的所有消息存储到相应的队列。MQSeries®2019/10/206队列管理器命名规则在同一个MQ架构的队列管理器的名字必须唯一,在基础架构中当我们指定一个到队列管理器的连接或指定一个队列管理器位置的时候我们需要用到队列管理器的名字。给队列管理器定义一个灵活的名字很重要,他可以反应队列管理器所在的位置以及用途等。队列管理器一旦命名就不能被更改,除非删除重建一个队列管理器可以被设置为缺省队列管理器,应用访问时可以不指定队列管理器的名字。我们可以用dspmq查看全部队列管理器名称和运行状态MQSeries®2019/10/207队列队列是用于存储消息的数据结构,通俗讲就是消息存储的容器。应用程序可以将消息放入特定的队列也可以从特定的队列取出消息。目前,MQ支持超过2G大小的队列。队列支持消息的先进先出,一般情况下消息是按顺序排队的,但是也可以按以下方式灵活处理队列中的消息:1.依据消息标识符ID2.给消息设定优先级3.进行消息分组MQSeries®2019/10/208队列本地队列传输队列别名队列远程队列模型队列死信队列启动队列命令队列回复队列MQSeries®2019/10/209消息通道消息通道是一种提供从一个队列管理器到另一个队列管理器的通信路径。消息通道用在分布式的队列把消息从一个队列管理器发送到另一个队列管理器。它们使应用程序屏蔽了底层的通信协议。队列管理器可能存在同种或异种平台之间。为了实现队列管理器之间的通信,您必需在一个队列管理器中定义一个发送消息的通道对象,在另一个队列管理器中定义一个接收消息的通道对象。MQSeries®2019/10/2010消息通道消息通道分类消息通道的定义可以分为以下6种类型:发送通道(Sender)接收通道(Receiver)服务器通道(Server)请求器通道(Requester)群集发送通道(Clustersender)群集接收通道(Clusterreceiver)MQSeries®2019/10/2011消息通道消息通道的组合形式如果要在队列管理之间实现消息传输,必须要在两个队列管理器上都要定义相应的通道。发送方和接收方通道的组合形式如下:发送通道-接收通道(Sender-receiver)请求器通道-服务器通道(Requester-server)请求器通道-发送通道(Requester-sender(callback))服务器通道-接收通道(Server-receiver)群集发送通道-群集接收通道(Clustersender–clusterreceiver)MQSeries®2019/10/2012MQI通道MQI通道是WebSphereMQ客户端和服务器上的队列管理器的通信的通道。它是一个双向的通道,可以负责发送和接收,被用作MQI调用的传送和响应。一个MQI通道可以把一个客户端连接到单个队列管理器,MQI通道有两种类型,它们定义了双向的MQI通道。客户器连接通道(Client-connectionchannel)服务器连接通道(Server-connectionchannel)MQSeries®2019/10/2013消息一个系统节点经常需要和另外一个系统节点进行通讯传输和请求操作,这两个系统节点可能不在同一服务器,甚至在不同地域这些通讯信息或请求我们就可以看成是消息。消息是对使用它的应用程序有意义的以字节为单位的字符串,消息可用于将信息从一个应用程序转移至另一个应用程序,应用程序可以在同一个平台或不同的平台上运行。消息描述符应用数据Messageid|messageIdNumConten…….报文消息-不要求接收端应用程序产生应答消息请求消息-要求接收端应用程序产生应答消息应答消息-对前一条请求消息的应答报告消息-报告一些预料到的或意外的事件消息类型消息长度最大消息长度为100MB缺省消息长度是4MB接收队列定义的最大消息长度队列管理器定义的最大消息长度传输队列定义的最大消息长度发送或接收应用程序定义的最大消息长度存储消息的可用空间MQSeries®2019/10/2014消息触发触发(Triggering),是一种自动启动应用程序的机制。队列管理器把某种条件叫做触发事件,如果队列被设置为触发类型,并且达到了触发条件,队列管理器会发送触发消息到一个叫做启动队列的队列中,触发消息被放置到启动队列的过程,意味着产生了触发事件。此时触发监控程序(只是一个从启动队列读消息的程序)将从启动队列中取出触发消息,并根据触发消息中的内容,启动相应的消息处理程序来处理被触发队列中的消息。队列管理器产生的触发消息不是永久性消息MQSeries®2019/10/2015触发类型EVERY当应用队列中每接收到一个消息时,都将产生触发消息。如果应用程序仅处理一个消息就结束时,可采用这种触发类型。FIRST:当应用队列中的消息从0变为1才会发生触发事件。如果当队列中的一个消息到达时启动应用程序,直到处理完所有消息就结束,则采用这种触发类型。DEPTH:当应用队列中的消息数目和TriggerDepth的属性值相同时,才会产生触发事件。当一系列请求的恢复都收到时,才启动应用程序,则采用这种触发类型。MQSeries®2019/10/2016触发类型MQSeries®2019/10/2017互联通信QM1DEADQ传输队列QM2DEADQ本地队列传输队列本地队列远程队列MCAMCAAPMCAMCA远程队列AP通道通道MQSeries®2019/10/2018日常检查和监控MQSeries®2019/10/2019切入点切入点MQ相关对象状态应用和MQ接口MQ事件信息MQSeries®2019/10/2020MQ相关对象状态(realtime)•队列管理器状态•队列管理器响应时间•连接数队列管理器•队列深度•打开输入输出计数•队列PUT和GET状态队列•通道状态通道•侦听状态侦听器•群集状态•共享队列群集•日志是否有报错•是否有FDC产生错误日志MQSeries®2019/10/2021MQ相关对象状态查看队列管理器状态:查看队列状态(可以在DIS后加MONITOR):MQSeries®2019/10/2022MQ相关对象状态查看通道状态:查看侦听器状态:MQSeries®2019/10/2023MQ相关对象状态MQSeries®2019/10/2024WebSphereMQ为应用提供后台的消息服务。由于身处后台,往往很难对系统正在发生的事情实时掌握。随着系统复杂度的提高,对系统监控与性能要求就变得非常重要。WebSphereMQ提供了一种强有力的监控功能——事件消息,系统在满足某些事先设定的条件后,自动产生事件消息,通过捕捉事件消息可以实时地了解系统中发生的问题。事件就像是遍布系统的监视器,一旦发生异常情况就会发送事件消息,自动报警。事件MQSeries®2019/10/2025WebSphereMQ的事件分四种,分别对应四个不同的系统队列。事件事件事件队列举例QueueManagerEventsSYSTEM.ADMIN.QMGR.EVENT消息的目标队列不存在ChannelEventsSYSTEM.ADMIN.CHANNEL.EVENT通道停止PerformanceEventsSYSTEM.ADMIN.PERFM.EVENT队列满ConfigurationEventsSYSTEM.ADMIN.CONFIG.EVENT对象有创建,修改,删除(仅z/OS平台)MQSeries®2019/10/2026在生产环境中,有时为了系统安全能及早地发现问题,或者对系统的状态和性能问题提前报警,设计者会打开Event开关,并对Event队列进行监控。在通常情况下,对Event队列监控需要编写程序。我们写出多线程的程序,每一个线程监控一个队列。在开放平台环境下,需要监控三个队列:SYSTEM.ADMIN.QMGR.EVENT,SYSTEM.ADMIN.CHANNEL.EVENT,SYSTEM.ADMIN.PERFM.EVENT。对于z/OS平台,需要多监控一个队列SYSTEM.ADMIN.CONFIG.EVENT。事件MQSeries®2019/10/2027事件开关设置MQSeries®2019/10/2028事件开关设置MQSeries®2019/10/2029应用来往报文应用日志状态应用访问MQ连接,是否能连接队列管理器,是否能正确打开对象应用和MQ网络连接状态在队列管理器上查看应用连接数应用和MQ应用程序连接到队列管理器后,就可以与访问WebSphereMQ对象(例如,队列)。队列管理器为其拥有的WebSphereMQ对象提供消息发送服务。应用程序连接MQ队列管理器的方式有两种:客户端连接模式绑定连接模式MQSeries®2019/10/2030应用程序连接MQ方式当利用客户机连接时,您必须指定其他一些环境属性,以便建立与队列管理器的连接。这些属性是:主机名,即作为队列管理器主机的WebSphereMQ服务器的名字;以及通道名,即服务器连接通道的名字。另外,您也可以指定WebSphereMQ服务器监听的端口号。如果还没有指定端口号的话,那么将使用默认的端口号1414。MQSeries®2019/10/2031客户端连接模式MQI(消息队列接口)有下列组成部分:函数接口:应用程序通过函数可以访问队列管理器和它的部件。数据结构:应用程序使用提供的数据接口来是实现把数据传递给队列管理器,或从队列管理器中获得数据。基本数据类型:也是用来实现从队列管理器传递数据,或从队列管理器中获得数据。MQI通道MQI通道是WebSphereMQ客户端和服务器上的队列管理器的通信的通道。一个MQI通道可以把一个客户端连接到单个队列管理器,MQI通道有两种类型,它们定义了双向的MQI通道。客户器连接通道(Client-connectionchannel)在客户端配置服务器连接通道(Server-connectionchannel)在服务器端配置MQSeries®2019/10/2032MQI回顾在绑定模式(也称作服务器连接模式)中,与队列管理器的通讯利用的是进程间通讯。关键因素之一就是,要记住绑定模式只适用于那些运行在作为队列管理器主机的WebSphereMQ服务器上的程序。利用绑定模式的程序不会从WebSphereMQ客户机机器上运行。换言之,应用程序被绑定在队列管理器所在的同一台机器上。绑定模式是访问WebSphereMQ的一种快速而高效的方法。某些功能(如队列管理器的扩展架构事务处理协同)只在绑定模式下才可用。MQSeries®2019/10/2033绑定连接模式命令MQSeries®有三个命令集可以用于管理MQ•控制命令•MQSC命令•PCF命令控制命令MQSeries®控制命令:控制命令是用来维护队列管理器本身的管理命令。控制命令可以分为三个类别类别描述队列管理器命令包括创建、启动、停止、删除队列管理器和命令服务器的命令通道命令包含启动和结束通道和通道启动程序的命令实