mq运维手册内容摘要:

消息每一封信件都有信封和信瓤两部分信封上面往往有收信人通信地址和发信人通信地址信瓤里是真正的内容 如图 24所示 WebSphere MQ 中的消息也一样它分成消息头和消息体两部分消息头是消息的属性集合含有目标队列管理器名和目标队列名 WebSphere MQ 就是利用这段消息来找到目标队列的消息体是消息的内容可以是任意的一段内存信息 图 24 信封和信瓤 WebSphere MQ 依靠每条消息头上所含的路由信息将消息准确地送达目的地路由信息中的远程队列管理器名指的是远端系统的名字远程队列名指的是远端系统中的目标队列名一个完整的队列名应该包含两部分队列管理器名和队列名格式为queue_namequeue_manager_name两部分名字的长度上限都是 48字节这两部分名字构成了消息路由的最基本的信息算法其实很简单如果队列管理器名未标明则缺省加上本地队列管理器的名字队列名会缺省地匹配本地普通队列而队列管理器名会缺省地匹配本地队列管理器名一般说来建议传输队列名与远程队列管理器同名消 息传送过程如下 1 应用程序通过 MQI发送消息 2 WebSphere MQ查看 queue_manager_name是否是本地队列管理器 a 如果是的将消息放入本地的名为 queue_name的消息队列中 b 如果不是将消息放入名为 queue_manager_name的传输队列中 3 MCP会把传输队列中的消息送达远端 4 远端将消息放入远端系统中名为 queue_name 的消息队列中 5 远端的应用程序从远端的本地队列中取得消息 这种办法提供了简单的路由功能但有一个明显的缺点直接使用全名会要求应用程序了解软件的网络结构分布哪些队列在哪里这有悖于 WebSphere MQ 对应用程序隐藏网络细节的设计初衷所以在跨队列管理器的应用中通常使用别名队列和远程队列来指定对方队列的名字从而将队列的分布信息保留在配置中 消息传送 在实现消息的跨队列管理器之间的传送时通常会在本地队列管理器上配置远程队列和传输队列在远端的队列管理器上配置本地队列并通过通道将两者连接起来如图 25所示这里的远程队列只是一个定义并无队列实体也就是说远程队 列不能存放消息应用程序一旦将消息通过 MQPUT送出则立刻放入传输队列中传输队列暂时存放待由通道发送的消息一旦通道连通且条件允许系统通信程序 MCA 会立即将消息送出消息到达对方目标队列管理器后由对方的通信程序 MCA 接收下来并放入相应的目标队列这里的目标队列就是目标队列管理器上的本地队列整个过程的效果就好像应用程序直接将消息送入目标队列一样 图 25 消息传送过程 远程队列的定义实际上就是指定的目标队列的位置及传输路径其中目标队列的位置通过设定目标队列名和目标队列管理器名来确定消息在路由过程中寻找该目标地址传输路径 就是传输队列名消息会通过该传输队列送出不同的远程队列可以共用一个传输队列 传输队列本质上是一个本地队列只是由系统通信进程 MCA 监护应用程序可以人为地通过MQPUT 放一条消息到传输队列上但如果该消息没有传输头 MQXQH 则不会被发送消息按以下方式处理 1 如果队列管理器设置了缺省死信队列则消息放入该死信队列死信消息原因码为MQFB_XMIT_Q_MSG_ERROR 2 如果队列管理器未设置缺省死信队列则对于非持久性消息消息被仍掉对于持久性消息消息会留在传输队列中无处可去这时有可能会堵住后继的消息造成通道 无法发送消息在经过远程队列放入传输队列时会由队列管理器自动添加一个传输头 MQXQH 且传输头中的内容会根据远程队列定义自动填写如果说原先的消息是 MQMD Body则放入传输队列的消息为MQMD MQXQH Body 三控制与管理 WebSphere MQ中的控制针对的是 MQ部件通常使用命令方式完成管理针对的是 WebSphere MQ对象可以用 MQSC脚本命令或图形界面工具完成在对 WebSphere MQ的维护中两者需要结合使用 31 MQ 控制命令 MQ 队列管理器控制 队列管理器是构建 WebSphere MQ 运行环境的基础用户需要首先创建并启动队列管理器才能进行以后的操作队列管理器的控制命令可以创建删除启动停止队列管理器也可以显示系统中所有的队列管理器及其当前运行状态 1创建队列管理器 格式 crtmqm [选项 ] QMgrName 功能 创建队列管理器 说明 QMgrName 指的是待建的队列管理器名 crtmqm 显示命令语法可以列出所有选项常用的选项有 [q][d DefXmitQ][u DeadQ]等它们可以组合使用选项如果取 q表示创建缺省队列管理器一台机器最多只能有一 个缺省队列管理器如果取 d 表示指明队列管理器的缺省传输队列如果取 u表示指明队列管理器的死信队列 创建时的选项指定了队列管理器的属性这些属性有些可以在创建后修改有些则不可以未用选项指明的的属性就使用缺省值创建命令可以不带选项 如 crtmqm QM 则所有属性皆使用缺省值 举例 crtmqm –q QM 2删除队列管理器 格式 dltmqm [z] QMgrName 功能 删除队列管理器 说明 该命令执行的前提是队列管理器的相关进程已经全部停止了该命令只有一个选项 z 表示抑制命令执行时发出的信息 举例 dltmqm –z QM 3启动队列管理器 格式 strmqm [z c] QMgrName 功能 strmqm 用来启动队列管理器也可以用来用缺省对象重建队列管理器 说明 如果在命令中没有选项则简单地启动队列管理器如果用 z 表示抑制命令执行时发出的信息– c 选项比较特殊表示重置队列管理器命令的执行过程为先启动队列管理器再覆盖重建所有的缺省系统对象最后自动停止该队列管理器 如果上一次队列管理器未能正常停止则启动后可能会回滚一些未完成的交易恢复一些消息和对象如果因为某些异常不能重启队列管理 器可以在出错日志 errors 目录 中寻找原因 举例 strmqm QM 4停止队列管理器 格式 endmqm [z] [c w i p] QMgrName 功能 endmqm 用来停止队列管理器 说明 通过不同的选项可以设置不同的停止方式比如选项取 c 表示受控 Controlled 方式停止即等到连接在该队列管理器上的所有应用全部主动断开连接后才停止队列管理器不过该命令是立即返回的显示命令已经提交如果选项取 – w 则同样是受控方式停止只是命令不是立即返回的在指定的时限 秒 内等待 Wait 命令执行完毕后或超时返回若选项取 i 即立即 Immediate 停止即使其它连接在该队列管理器上的应用的所有后继 MQ API 全部失败以督促它们退出命令在队列管理器停止后返回若选项取 – p 即强行 Preemptive 停止不会等待其它应用程序释放资源或断开连接而直接将队列管理器进程退出有可能会造成异常 z 选项表示抑制命令执行时发出的信息可以与其它选项组合使用 举例 endmqm QM 5显示队列管理器 格式 dspmq [m QMgrName] 功能 dspmq 用来显示 本地的队列管理器的运行状态 说明 如果用 – m 选项表示显示某个具体的队列管理器运行状态否则表示显示所有的队列管理器状态 举例 dspmq QMNAME QM STATUS正在运行 QMNAME QM1 STATUS正常结束 QMNAME QM2 STATUS正常结束 MQ 命令服务器控制 WebSphere MQ 命令服务器是队列管理器的一个组件用来对外来的命令消息进行解释和执行在远程管理和编程管理的应用中需要启动命令服务器一个队列管理器最多只有一个命令服务器缺省情况下在创建队列管理器时由系统 一并创建 1启动命令服务器 格式 strmqcsv [QMgrName] 功能 strmqcsv 用来启动命令服务器 说明 QMgrName 指的是命令服务器所在的队列管理器缺省为系统缺省队列管理器命令服务器是队列管理器的附加部件用来执行管理命令 举例 strmqcsv QM 2停止命令服务器 格式 endmqcsv [c i] QMgrName 功能 endmqcsv 用来停止命令服务器 说明 通过不同的选项可以选择不同的停止方式 c 表示受控方式 Controlled 停止允许已经开始的命令执行完成 然后停止该命令服务器 i 表示立即 Immediately 停止中止正在执行的命令并立即停止命令服务器 举例 endmqcsv –c QM 3显示命令服务器 格式 dspmqcsv [QMgrName] 功能 dspmqcsv 用来显示命令服务器的状态 说明 这里 QMgrName指的是命令服务器所在的队列管理器缺省为系统缺省队列管理器 举例 dspmqcsv QM MQ 监听器控制 WebSphere MQ 中监听器也是队列管理器的一个组件用来监听外来的连接请求并相 应地做出反应监听器通常需要先配置然后才能运行配置参数与监听器选择的通信协议有关当然也可以在第一次启动监听器时将配置参数传入隐式地进行配置一个队列管理器可以有多个监听器分别应用于不同的通信协议或同一协议的不同参数比如 TCPIP的不同端口 1启动监听器 格式 runmqlsr [m QMgrName] t TCP LU62 NETBIOS SPX [参数 ] 功能 runmqlsr 用来启动监听器 说明 监听器是通道连接的被动方用来监听网络连接的程序命令格式中 QMgrName指的是命令服务器所在的 队列管理器缺省为系统缺省队列管理器 t 选项指定通信协议参数与监听器选择的通信协议有关具体参见附录 WebSphere MQ 命令一览表 举例 runmqlsr t tcp p 1414 m QM 2停止监听器 格式 endmqlsr [w] [m QMgrName] 功能 endmqlsr 用来停止监听器实质上就是停止网络监听程序 说明 QMgrName 指的是命令服务器所在的队列管理器缺省为系统缺省队列管理器选项为 – w 时表示等待方式 Wait 停止命令执行会等到监听器停止完成后才返回否 则立即返回 举例 endmqlsr –m QM 3配置 TCPIP 监听器 TCPIP 协议是目前使用最广泛的通信协议 WebSphere MQ队列管理器的 TCPIP监听器可以配置成三种形式即用带参数的 runmqlsr 进程进行监听 UNIX 环境下可以用操作系统 TCPIP Deamon进程 id进行监听 Windows 环境下也可以配置成 WebSphere MQ 服务的形式这里不做详细介绍一个队列管理器可以有多个监听器分别监听多个端口 配置 runmqlsr 这是配置 MQ监听器的标准方式格式为 runmqlsr t tcp [m ] [p ]如果缺省 m选项表示使用缺省队列管理器如果缺省 – p选项表示表示使用缺省端口 1414 在 UNIX下则可以用 runmqlsr t tcp [m ] [p ] 将命令放在后台执行 配置 id 在 UNIX 平台中可以通过配置 id使 MQ 监听器植入系统监听服务中相当于每次开机监听器就自动启动了具体配置分三步 1 在 etcservices 中添加 MQSeries1 1414tcp MQSeries2 1415tcp 其中 MQSeries1 和 MQSeries2 分别是为监听端口起的别名可以是任意字串 2 在 idconf 中添加 MQSeries1 stream tcp nowait mqm usrlppmqmbinamqcrsta amqcrsta [m QMgr1] MQSeries2 stream tcp nowait mqm usrlppmqmbinamqcrsta amqcrsta [m QMgr2] 其中 MQSeries1 和 MQSeries2 需要与 etcservices 文件中的定义配合起来 3 让修改的配置生效 refresh s id AIX kill 1 其它 UNIX MQ触发监控器控制 触发监控器 Trigger Monitor 是 WebSphere MQ的组件之一用于监控消息触发初始化队列并启动消息处理程序触发监控器根据其运行的位置分为 MQ Client端触发监控器和 MQ Server 端触发监控器分别用于启动各自系统中的消息处理进程 一个队列管理器可以有多个触发监控器分别监控不同的初始化队列程序员。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。