我目前在路由中使用doTry / doCatch块,因此我无法使用全局onException块。
但是,如果驼峰路线中断(由于代码错误或意外/未经测试的情况),我想执行一些业务逻辑。希望永远不会发生这种情况,但我仍然希望处理更糟糕的情况。
我在全局onException块中不能有java.lang.Exception,而且,我不想在每条路径上添加一个追加捕获。
Camel在抛出未捕获的异常和断开路径之前是否有一个特定的方法。
我在Uncaught Exceptions中看到以下日志:
2015-04-20 15:11:35,279 [Camel (fulfillmentOrderProcessor) thread #5 - seda://FulfillmentSedaQueue] WARN o.a.c.component.aws.sqs.SqsConsumer [, ID-ip-10-180-252-213-54360-1429566855015-0-144]: Exchange failed, so rolling back message status: Exchange[Message: {... }]
java.lang.IllegalArgumentException: Unable to parse string argument null
我查看了UnitOfWork.afterprocess。但即使我已经用骆驼路线处理它,交换也会有例外,这无济于事。
答案 0 :(得分:1)
默认情况下,Camel会将异常传播回调用者,因此您可以在任何客户端代码调用seda://FulfillmentSedaQueue
路由时捕获异常......
否则,服务器端的选项(如您所述)将使用全局onException clause或路由特定的doTry/doCatch语句