【发布时间】:2017-05-18 18:19:42
【问题描述】:
首先我会说我使用的是 Camel 2.14,目前根本不考虑升级。所以我错过了 2.17 中的 doWhile 选项。
我有一个场景,我需要能够让路由在准备好时重复尝试交付给服务实例。一旦成功,我需要退出循环。到目前为止,我已经能够查看指定次数。但是,即使成功,该循环也会继续。
我已经搜索过了,看来我没有太多选择。或者我还是骆驼领域的新手,无法识别我的选择。
<route>
<from uri="activemq:queue:myQueue" />
<loop>
<simple>100</simple>
<when>
<simple>${bean:myService?method=isReady}</simple>
<to uri="bean:myService?method=doWork" />
</when>
</loop>
</route>
【问题讨论】:
-
循环点是不是要加延迟机制?
-
不,关键是等到服务准备好进行处理。这是一种重试机制,可以反复进行测试以确定就绪状态。
-
就像@Claus 说的那样,我认为最好的方法是首先检查您的bean 是否准备好并使用队列中的消息。但是,保持这些状态通常很棘手。如果您的 bean 从未准备好会发生什么?你会一直等下去吗?
标签: java apache-camel activemq