我有一个 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>
1条答案
按热度按时间11dmarpk1#
我认为试抓是最好的解决方案也是常见的编程解决方案也 Camel 也有停
https://camel.apache.org/manual/try-catch-finally.html