队列管理器已经设置了自动启动,在重起机器后队列管理器可以自动启动,但是,发送方通道却不能自动启动。
查了一些资料,发现有两种解决办法
办法一
“也有一些通道不会自动启动,最典型的就是发送方通道。首先我们创建一个进程定义,这个进程定义的目的就是用来启动发送方通道。然后我们在传输队列的进程名称属性栏指定刚才定义的进程定义名称,再把触发器控制开关打开。这样,当有消息进入传输队列后,传输队列的触发器会启动触发执行指定的进程,从而启动发送方通道,把消息传输到远程队列中去。 ”
办法二,以下是引用MQ帮助文档原文
“如果要触发通道的启动而不是应用程序的启动,则您不需要创建进程定义,因为可使用传输队列定义代替。”
对于办法二我看不懂,是不是还有其他解决办法,敬请高手赐教,致谢!!!!!!我的目的是队列管理器自动启动后,发送方通道也自动启动。
差劲的翻译害死人啊,象天书一样.
大致上可以猜到原意,就是定义一个传输队列,在它的进程(process)属性里面写一个通道的名字,再定义触发条件,当触发条件满足的时候,触发控制器(必须事先已经启动起来)就会把这个通道启动起来小学教师实习报告 .
不过没有办法可以达到你的目的,通道不会在队列管理器启动后自动启动,只会在有消息需要发送,而事先又定义了触发条件的时候才会启动通道.
但是现在的最终表现和理论不一致,我在两台服务器上均装了MQ6.0,在没有定义触发器,并且没有应用数据发送的情况下,一台机器重起后在队列管理器自动启动后,发送方通道能够自动启动。但另一台机器重起后,发送方通道却不能自动启动。
以前也见过队列管理器自动启动后发送方通道能够自动启动的情况,不过都认为那是天上掉下来的好运,应该是不能自动启动的.所以在做HACMP切换的时候要自己写一个脚本,在队列管理器切换过去并重新启动后再启动发送方通道.
现在回想起来,应该在这种情况下通道才会自动启动:
在队列管理器停止以前发送方通道已经启动了,并且还有可能正在传送数据,或者处于batch interval的等待期内.
队列管理器是被强行中止的,没有经过一段quiesc的过程,比如强行关机
这种情况下,队列管理器重新启动后,会做一系列的清理恢复动作,其中有可能根据通道日志把发送方通道启动起来,完成前面未完成的事务.