【发布时间】:2014-03-06 05:15:49
【问题描述】:
我们有一个标记为已触发的应用程序 MQ 队列并在其上设置了 MQTT_FIRST。
当消息第一次到达该队列时,队列管理器会创建一条触发消息并将其写入我们为此目的定义的启动队列中。 触发消息触发监控进程的执行,该进程将启动一个触发监控应用程序,该应用程序将从应用程序队列中一一读取消息。
我们使用 Spring JmsTemplate 从应用队列中一一读取消息。该 jmsTemplate 实例打开与应用程序队列的连接,从那里读取消息,然后关闭连接。
我们遇到的问题是,当连接关闭时,如果应用程序队列中有多个消息,则会将新的触发消息发送到启动队列,这将导致另一个触发监视器应用程序(在不同的主机上运行)弹出窗口。这不是我们想要的,因为对于我们来说,必须同时只有一个消息消费者处于活动状态,因为消息序列非常重要。
我们有多个触发器监视器应用程序(或消费者)的原因是出于 HA 的原因。
所以我的问题是:有没有办法阻止 MQ 管理器向启动队列发送多个 MQTT_FIRST 触发消息,并使其仅在消息到达空队列时发送一次,仅此而已。如果我们真的想要再次发送消息触发器,我们可以为此使用触发器间隔,但是对于我们试图实现的目标,无论如何,启动队列中的触发器消息都不应超过一个。
提前致谢 朱利安
【问题讨论】: