我有一条骆驼路线,经过一系列处理器,每个处理器都调用一些服务。如果处理器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>发布于 2022-08-16 07:15:21
我认为尝试捕捉是最好的解决方案,也是常见的编程解决方案,也是骆驼也有停止的。
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");https://stackoverflow.com/questions/73367109
复制相似问题