首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果以前的处理器失败,跳过Camel处理器

如果以前的处理器失败,跳过Camel处理器
EN

Stack Overflow用户
提问于 2022-08-15 22:45:30
回答 1查看 67关注 0票数 1

我有一条骆驼路线,经过一系列处理器,每个处理器都调用一些服务。如果处理器1优雅地失败了,我不再想调用处理器2-5,但我确实想调用consolidateResponse。其他处理器也是如此。有什么最佳实践方法可以做到这一点而不对失败抛出一个例外呢?

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-16 07:15:21

我认为尝试捕捉是最好的解决方案,也是常见的编程解决方案,也是骆驼也有停止的。

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

代码语言:javascript
复制
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");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73367109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档