0

我有一个简单的骆驼设置:

            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,而不删除重试策略?

4

1 回答 1

1

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

谢谢,约格什

于 2012-12-12T04:30:40.233 回答