Exception 使用split运算符处理Camel异常
我用订单/项目示例简化了我的用例 订单上有一些项目。 每个项目都是受控的=>可以从“controlItem”引发AvailabilityException。 抛出异常后,项目被标记为Ok,并处理下一个项目Exception 使用split运算符处理Camel异常,exception,apache-camel,activemq,Exception,Apache Camel,Activemq,我用订单/项目示例简化了我的用例 订单上有一些项目。 每个项目都是受控的=>可以从“controlItem”引发AvailabilityException。 抛出异常后,项目被标记为Ok,并处理下一个项目 onException(AvailabilityException.class) .onExceptionOccurred(ItemProcessor) .handled(true) .bean(service, "mar
onException(AvailabilityException.class)
.onExceptionOccurred(ItemProcessor)
.handled(true)
.bean(service, "markAsOk");
from(startQueue)
.split(simple("${body.items}"))
.to(direct:controlItem")
.end()
.to(successQueue);
from("direct:controlItem")
.bean(service, "controlItem");
现在我有另一个例子:
当抛出意外异常(NullPointerException,…)时,我希望停止进程。我们不处理下一个项目,订单被重定向到错误队列。
我该怎么做呢?您可以使用
doTry
和doCatch
exchange.getContext().stop(),而不是stop()代码>
RunTimeException
s添加另一个oneexception
,并停止路由exchange.setProperty(exchange.ROUTE\u STOP,Boolean.TRUE)代码>
from(startQueue)
.doTry()
.split(simple("${body.items}"))
.to(direct:controlItem")
.end()
.to(successQueue);
.doCatch(AvailabilityException.class)
....
....
.handled(true)
.doCatch(RunTimeException.class)
....
....
.handled(false)
.stop() // stop the execution
.doFinally() //optional