如何在骆驼项目的蓝图路线中处理异常

时间:2019-07-10 11:02:20

标签: java apache-camel jbossfuse blueprint-osgi

我正在使用JbossFuse进行骆驼项目。我在这里使用蓝图。现在我想要的是,当任何路由中出现任何异常时,它将由某个处理器处理,并且有效的响应将返回给客户端。

1 个答案:

答案 0 :(得分:1)

您可以使用try catch覆盖蓝图文件中的任何路由,并处理对客户端的最终响应。逻辑将类似于:

<route id="route_1">
    <from id="_from_1" uri="direct:processDemo1"/>
    <doTry id="_doTryDemo1">
        <process id="_process_processDemo1" ref="processorBean"/>
        <doCatch id="_doCatchDemo1">
            <exception>java.lang.Exception</exception>
            <to id="_handleExceptionDemo1" uri="direct:HandleException_demo1"/>
        </doCatch>
        <doFinally id="_doFinallyDemo1">
            <log id="_log_Demo1Process_finally" message="Demo1 operation completed"/>
        </doFinally>
    </doTry>
</route>

这里processorBean是处理Demo1路由​​的Bean类,而uri="direct:HandleException_demo1"是另一个路由,如果Demo1路由​​中有异常,则将调用该路由。因此,该路由的例外路由将是

<route id="routeDemo1Exception">
    <from id="_fromdemo1Exception" uri="direct:HandleException_demo1"/>
    <log id="log_demo1Exception" message="Demo1 Exception called"/>
    <process id="_process_exception_Demo1" ref="processDemo1ExceptionBean"/>
</route>