【发布时间】:2012-10-02 11:04:11
【问题描述】:
我正在使用骆驼从 activemq 队列中读取消息,对其进行处理并将其发布到另一个队列。路线如下:
from("jms:incoming.queue")
.process(new MyProcessor())
.to("jms:outgoing.queue");
我需要指定一个超时时间,如果“incoming.queue”中超过 3 分钟没有消息,我想停止路由。我可以使用 OnCompletion() 但在每条消息之后都会调用它。我可以指定将消息发送到“outgoing.queue”的超时时间。有没有办法可以指定超时,如果“incoming.queue”中没有消息超过 3 分钟,我可以停止路由?
提前感谢您的帮助。
【问题讨论】:
-
为什么要停止超过 3 分钟不活跃的路线?您可以在某处写入最后处理时间,并与使用计时器组件推送的其他路由进行检查。
-
@white - 要求是“incoming.queue”中的消息需要在非工作时间处理,比如晚上 8:00。路由此时需要处理队列中的所有消息。处理完所有消息后,需要停止路由,以免消息在第二天开始到达队列时立即开始处理。该路线需要在晚上 8:00 PM 重新开始。有简单的方法吗?
标签: jms activemq apache-camel