【问题标题】:Exit from Apache Camel loop退出 Apache Camel 循环
【发布时间】:2018-09-28 06:05:02
【问题描述】:

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

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

我尝试在 exitFromLoop 方法中更改 CamelLoopIndex 和 CamelLoopSize,但对我不起作用。

是否有任何替代方法,例如使用选择/何时?

【问题讨论】:

    标签: apache-camel jbossfuse apache-servicemix


    【解决方案1】:

    如果您使用 Camel 2.17 及更高版本,则会出现循环 while 模式。

    查看文档:http://camel.apache.org/loop

    然后循环像while循环一样运行,直到谓词评估为假/空或零。

    作为谓词,它不会自动递减计数器,所以它就像 java 中的 while 循环。

    【讨论】:

    • 太棒了。谢谢克劳斯。我正在使用 Fuse 6.2,它使用 Camel 2.15。 Camel 2.15 有替代方案吗?
    • 您可以使用动态路由器 EIP 代替 - 或者如果您不需要在循环后进行任何路由,您可以将交换标记为停止
    【解决方案2】:

    直到camel 2.16(以及2.17),您可以在内的块中使用语句,并将循环计数器设置为任意上限值限制。

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

    【讨论】:

      猜你喜欢
      • 2019-05-20
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 2021-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多