我有一个camel路由来使用来自JMS主题的消息。当路线开始,并且主题中没有消息时,我想提出异常并停止该过程。
我正在使用Apache Camel中的JmsComponent,它使用Spring的DefaultMessageListenerContainer并定义为事务性的。当前的行为是路由开始但它会无限期地等待消息。
是否有任何解决方案可以检查消息是否存在,只是在缺席时停止路线?
答案 0 :(得分:0)
您需要定义等待消息的时间限制,并断定事情出错。
然后,使用完成超时(例如)30秒的聚合器。
这样,如果您在没有收到有关该主题的消息的情况下超过30秒,那么您可以采取任何您喜欢的行动。
from("mq:topic:xyz")
.aggregate(constant(true), new TakeLastAggregationStrategy())
.completionTimeout(30000)
.to("direct:raiseException")