我正在使用JbossFuse进行camel项目。这里我使用的是blueprint。现在我想要的是,当任何路由中出现任何异常时,将由某个处理器处理,并向客户端返回有效的响应。
发布于 2019-07-10 19:15:28
您可以使用try catch和process处理对客户机的最终响应来覆盖blueprint文件中的任何路由。逻辑大概是这样的:
<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>https://stackoverflow.com/questions/56969310
复制相似问题