工业制造其它假死监控器mq 6.0

MQ触发监控器(monitor)假死

环境:windows server 2003,MQ 6.0.

配置:本地队列触发方式:first.

由于用户密码更改,接收电文的通讯程序被监控器调用后报错(connect  to db failed,sqlca.sqlcode=-30082),此时间后本地队列有新消息,程序再没有被调用。通讯程序使用新密码编译后,在本地队列放测试消息,程序也不被调用。关闭runmqtrm.exe,手动启动runmqtrm.exe后马上调用通讯程序。

问题:runmqtrm.exe运行原理,为啥假死,是对被调用程序的可用性有标识吗?一次不可用,永远不可用?

参与5

2同行回答

jordanfangjordanfang软件架构设计师IBM
对于你的问题,需要先了解MQ触发机制的工作原理。MQ触发机制是:当一个消息被放到设置为触发的应用队列中时,根据应用队列设置的触发类型及相应的触发事件,队列管理器将产生一条触发消息放入initiation队列中。触发监控器(monitor)从initiation队列读取触发消息并基于消息内容采...显示全部

对于你的问题,需要先了解MQ触发机制的工作原理。

MQ触发机制是:当一个消息被放到设置为触发的应用队列中时,根据应用队列设置的触发类型及相应的触发事件,队列管理器将产生一条触发消息放入initiation队列中。触发监控器(monitor)从initiation队列读取触发消息并基于消息内容采取相应的动作。

runmqtrm.exe是MQ内嵌的触发监控器。

对于FIRST触发类型,队列管理器产生触发消息的触发事件是触发队列的深度从0改变为1。

对于描述中提到的关于”通讯程序出错和使用新密码编译后,程序也不被调用“问题,是由于不满足触发事件(触发队列的深度从0改变为1),队列管理器没有产生触发消息,所以触发监控器不会有启动通讯程序的动作。

对于描述中提到的“关闭runmqtrm.exe,手动启动runmqtrm.exe后马上调用通讯程序“问题,是当队列管理器发现没有触发监控器运行,而且触发队列的深度又不为0时,将产生一条触发消息放入initiation队列中。当重新启动runmqtrm.exe后,就会马上调用通讯程序,所以不存在runmqtrm.exe假死的问题。

MQ提供了队列管理器的属性TRIGINT,可以指定一个时间间隔,为设置为FIRST类型的触发队列所使用

收起
IT咨询服务 · 2017-01-01
浏览2021
happyboy1001happyboy1001系统运维工程师鞍钢鲅鱼圈分公司
非常感谢你的专业指导,我的队列管理器的属性TRIGINT采用默认值11.5天,周期太长,导致故障恢复后不能及时触发,计划更改为5分钟。显示全部

非常感谢你的专业指导,我的队列管理器的属性TRIGINT采用默认值11.5天,周期太长,导致故障恢复后不能及时触发,计划更改为5分钟。

收起
工业制造其它 · 2017-01-03
浏览1793

提问者

happyboy1001
系统运维工程师鞍钢鲅鱼圈分公司

问题状态

  • 发布时间:2016-12-30
  • 关注会员:2 人
  • 问题浏览:3124
  • 最近回答:2017-01-03
  • X社区推广