我有一个侦听ActiveMQ的骆驼路线。我添加了10秒的延迟时间,因为它需要确保在开始之前另一个进程已经完成。这可以通过添加delayer属性来实现:-
<camel:route id="packageRetrievalContentAndSendToS3" delayer="10000">
<camel:from uri="activemq:{{ccs.activemq.queue.prefix}}.sr.package.and.send"/>
....extra steps....
</camel:route>
这很好,但是麻烦的是,我的路线现在超时了!下面的消息。
Atomikos:8] c.a.icatch.imp.ActiveStateHandler : Timeout/setRollbackOnly of ACTIVE coordinator !
对于如何解决此问题,我将不胜感激。理想情况下,我想增加该路由的超时时间。非常感谢
答案 0 :(得分:2)
正如@ sergei-petunin所说,您尝试通过等待来补偿设计问题。
您的路线在等待的事情完成之前不会收到消息。这意味着
因此,该过程的所有部分步骤都是异步执行的,顺序执行是因为它们相互依赖。这也称为Pipes and Filters EIP。
如果您可以控制等待的事物,则可以通过在等待的事物和路线之间放置消息队列来轻松更改设计。