Apache Camel - 如何在默认处理程序之前处理异常?

时间:2012-12-10 14:03:50

标签: error-handling apache-camel

我有一个简单的Camel设置:

            final MyErrorProcessor myErrorProcessor = new MyErrorProcessor(10);

            onException(FooException.class)
                    .bean(myErrorProcessor, "process")
                    .redeliveryDelay(TimeUnit.SECONDS.toMillis(5))
                    .maximumRedeliveries(10);

            from(MIDDLE_QUEUE)
                    .bean(ProcessorBean.class, "process")
                    .to(resultEndpoint)
                    .end();

myErrorProcessor只是我想在获得异常后立即调用的bean。

问题是我只在所有重试失败时才执行myErrorProcessor.process(),但我想只计算异常,即使它们已成功重试。

我知道有.onRedelivery()但它有类似的问题:它只在redeliveryDelay之后调用我的bean,而不是在抛出异常的那一刻。

所以,我的问题是:有没有办法在Camel捕获异常时通知我的自定义bean,而不删除重试策略?

1 个答案:

答案 0 :(得分:1)

您可以从FooException中删除重新传递,然后让自定义bean运行其处理并在处理后重新抛出异常吗?然后一个单独的异常句柄可以进行重新传递吗?

谢谢, 约杰什