我正在使用camel从activemq队列中读取消息,对其进行处理并将其发布到另一个队列中。路线如下所示:使用camel指定从activemq队列读取消息的超时
from("jms:incoming.queue")
.process(new MyProcessor())
.to("jms:outgoing.queue");
我需要是否有“incoming.queue”超过3分钟内没有消息指定超时这样,我想停止路线。我可以使用OnCompletion(),但它会在每条消息之后调用。我可以指定发送消息到“outgoing.queue”的超时时间。有没有一种方法可以指定超时时间,如果在“incoming.queue”中没有超过3分钟的消息,我可以停止路由?
在此先感谢您的帮助。
为什么你需要停止超过3分钟不活动的路线?您可以在最后一次处理时间的地方写入,并使用其他路径按计时器组件进行检查。 – white
@white - 要求在“incoming.queue”中的消息需要在下班时间处理,例如晚上8:00 PM。此时路由需要处理队列中的所有消息。一旦处理完所有消息,就需要停止路由,以便它在第二天开始抵达队列时就不开始处理消息。路线需要在晚上8点重新开始。有没有简单的方法来做到这一点? – Sathish