【发布时间】:2019-07-10 11:02:20
【问题描述】:
我正在使用 JbossFuse 进行骆驼项目。这里我使用的是蓝图。现在我想要的是,当任何路由中出现任何异常时,将由某个处理器处理,并将有效响应返回给客户端。
【问题讨论】:
标签: java apache-camel jbossfuse blueprint-osgi
我正在使用 JbossFuse 进行骆驼项目。这里我使用的是蓝图。现在我想要的是,当任何路由中出现任何异常时,将由某个处理器处理,并将有效响应返回给客户端。
【问题讨论】:
标签: java apache-camel jbossfuse blueprint-osgi
您可以使用 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>
【讨论】: