退出Apache Camel循环

时间:2016-08-09 13:14:41

标签: apache-camel jbossfuse apache-servicemix

我想在某种情况下退出Camel Loop。我正在使用Camel 2.15

 .loop(simple("${exchangeProperty.loopCount}"))
   .to("bean:xxx?method=exitFromLoop")
 .end()

我尝试在exitFromLoop方法中更改CamelLoopIndex和CamelLoopSize,但对我没有用。

有没有替代方法,例如使用choice / when?

2 个答案:

答案 0 :(得分:3)

如果你使用Camel 2.17,那么在模式下有一个循环。

请参阅文档:http://camel.apache.org/loop

然后循环像while循环一样运行,直到谓词计算为false / null或为零。

作为一个谓词,它不会自动递减计数器,因此它就像java中的while循环一样。

答案 1 :(得分:0)

直到骆驼2.16(以及2.17中)你可以使用< camel:stop />声明在< camel:when>阻止< camel:loop>内部,并将循环计数器设置为某个任意上限。

或者你的循环可能包含一个java处理器,它可以有条件地停止路由:exchange.setProperty(Exchange.ROUTE_STOP,Boolean.TRUE);