如果上一个处理器失败,则跳过Camel处理器



我有一个骆驼路由,它经过一系列处理器,每个处理器都调用一些服务。如果处理器1正常故障,我不再想调用处理器2-5,但我确实想调用consolidateResponse。所有其他处理器也是如此。有没有一种最佳实践方法可以在不对失败抛出异常的情况下实现这一点?

<camel:routeContext id="myRouteRouteContext">
<camel:route id="my-route-route">

<camel:from uri="{{camel.uri.myRoute}}" />
<camel:process ref="{{bean.processor.processor1}}" />
<camel:process ref="{{bean.processor.processor21}}" />
<camel:process ref="{{bean.processor.processor3}}" />
<camel:process ref="{{bean.processor.processor4}}" />
<camel:process ref="{{bean.processor.processor5}}" />
<!--  Stringfy response object into a JSon text response -->
<camel:process ref="{{bean.processor.consolidateResponse}}" />
<!-- All catch exception handler -->
<camel:onException>
<camel:exception>java.lang.Exception</camel:exception>
<camel:handled>
<camel:constant>true</camel:constant>
</camel:handled>
<camel:to uri="{{camel.uri.error}}" />
</camel:onException>
</camel:route>
</camel:routeContext>

我认为try-catch是最好的解决方案,也是常见的编程解决方案,骆驼也有停止

https://camel.apache.org/manual/try-catch-finally.html

from("direct:start")
.choice()
.when(body().contains("Hello")).to("mock:hello")
.when(body().contains("Bye")).to("mock:bye").stop()
.otherwise().to("mock:other")
.end()
.to("mock:result");

最新更新