Apache Camel JmsComponent - 如何检查主题中是否有消息?

时间:2015-02-20 13:34:20

标签: spring apache-camel spring-jms jms-topic

我有一个camel路由来使用来自JMS主题的消息。当路线开始,并且主题中没有消息时,我想提出异常并停止该过程。

我正在使用Apache Camel中的JmsComponent,它使用Spring的DefaultMessageListenerContainer并定义为事务性的。当前的行为是路由开始但它会无限期地等待消息。

是否有任何解决方案可以检查消息是否存在,只是在缺席时停止路线?

1 个答案:

答案 0 :(得分:0)

您需要定义等待消息的时间限制,并断定事情出错。

然后,使用完成超时(例如)30秒的聚合器。

这样,如果您在没有收到有关该主题的消息的情况下超过30秒,那么您可以采取任何您喜欢的行动。

from("mq:topic:xyz")
    .aggregate(constant(true), new TakeLastAggregationStrategy())
    .completionTimeout(30000)
    .to("direct:raiseException")