如何捕获/处理Camel中所有未捕获的异常

时间:2015-04-20 23:25:27

标签: java apache-camel

我目前在路由中使用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。但即使我已经用骆驼路线处理它,交换也会有例外,这无济于事。

1 个答案:

答案 0 :(得分:1)

默认情况下,Camel会将异常传播回调用者,因此您可以在任何客户端代码调用seda://FulfillmentSedaQueue路由时捕获异常......

否则,服务器端的选项(如您所述)将使用全局onException clause或路由特定的doTry/doCatch语句