1.队列触发机制:
设置一个本地队列(模版为SYSTEM.DEFAULT.INITIATION.QUEUE)为触发队列,在有消息到达时,事件被触发,这时队列管理器会发一个触发消息到初始化队列。该触发消息包括了应用程序名(进程定义process),用于处理消息。然后触发监控器从初始化队列中取出消息,启动应用程序,如A,然后A打开本地队列,并处理队列中的消息。
以下文字转载自http://www.cnblogs.com/windows/archive/2011/03/23/1992602.html
假定定义好了队列管理器:MQ manager: MQ.ORANGE, 本地队列MQ queue: QU.LOCAL;
(1)在进程里定义一个触发进程(例如 TrigGetMessage),在“应用程序标识”处输入应用程序路径(例如"E:\Release\GetMessge.exe");
(2)建立一个启动队列 QU.INI。启动队列也是本地队列,类型为 WebSphere MQ Default Initiation Queue;将触发器控制设置为“打开”状态,根据应用需要选择相应的触发逻辑条件(例如,“第一个”、“每个”,“深度”);
(3)打开本地队列QU.LOCAL, 选择触发,在进程名称处输入上面建好的进程名 TrigGetMessage,在初始队列处输入:QU.INI;将触发器控制设置为“打开”状态,根据应用需要选择相应的触发逻辑条件(例如,“第一个”、“每个”,“深度”);
(4)前三部分属于配置准备,现在要打开触发监控器,在cmd命令行里输入MQSC命令:runmqtrm -m MQ.ORANGE -q QU.INI
(5)现在可以根据触发条件测试。
2.自动启动发送端通道机制。
A 在传输队列上设置触发器, 打开触发器控制, 类型为"第一个"。
B 选择初始化队列为SYSTEM.CHANNEL.INITQ, 该队列为MQ专用的通道启动队列,不需要手工启动其触发监视器。
C 触发器数据为发送端通道名称, 例如 QM1.TO.QM2。
D 在发送端通道不活动(状态为stop时,不会启动)的情况下, 在传输通道放入消息测试。
这是就能自动启动发送端通道。
触发类型
EVERY:当本地队列中每接收到一个消息时,都将产生触发消息。如果应用程序仅处理一个消息就结束时,可采用这种触发类型。
FIRST:当本地队列中的消息从0变为1才会发生触发事件。如果当队列中的一个消息到达时启动应用程序,直到处理完所有消息就结束,则采用这种触发类型。
DEPTH:当应用队列中的消息数目和TriggerDepth的属性值相同时,才会产生触发事件。当一系列请求的恢复都收到时,才启动应用程序,则采用这种触发类型。
当采用depth触发时,产生触发消息后,队列将被修改成非触发方式,如果需要再次触发,将要重新设置成允许触发。
队列的TriggerDepth属性表示引起depth触发事件发生时,队列中的消息数目。