Fatalfallbackerrorhandler被处理,但被设置为true时被调用

问题描述 投票:0回答:1

我的骆驼路线如下。尽管我设置了handle(true),但我不明白为什么在所有重试都用尽之后defaulterrorhandler会调用fatalfallbackerrorhandler。

onException(Exception.class)
    .handled(true)
    .to("direct:errors")          ----->  (1)
    ;                    

from("direct:errors")
    .log("hello world ");

from("timer:testRoute")
   .routeId("testRoute_1")
   .throwException(new Exception("Dummy Exception"))
   .pollEnrich("file://source")
   .to(http://localhost:8080)

日志:

20.04.03 11:46:53.907信息广告#6-timer:// testRoute route1 BreadCrumbId = ID-xxxxxx-1585894556662-0-4 |你好世界

20.04.03 11:46:53.913错误广告#6-timer:// testRoute mel.processor.DefaultErrorHandler BreadCrumbId = ID-xxxxxx-1585894556662-0-4 | (ExchangeId:ID-xxxxxx-1585894556662-0-4上的(MessageId:ID-xxxxxx-1585894556662-0-5)的传递失败。交付尝试后已用尽:4个被捕获:java.lang.Exception:虚拟异常。由失败处理器处理:FatalFallbackErrorHandler [Channel [sendTo(direct:// errors)]]

如果我在第(1)行中注释defaulterrorhandler没有调用fatalfallbackerrorhandler。

apache-camel jbossfuse spring-camel
1个回答
0
投票

这看起来非常有效。我什至在测试类中进行了尝试,并且它按预期工作,计时器每秒“生成”一个日志条目。

实际上,是转发到direct:errors的消息被重试5次,但不会成功。这很奇怪,因为direct组件是骆驼核心的一部分。

我建议检查您的项目依赖项。您的类路径上是否有不同版本的Camel JAR?如果使用Maven,则可以尝试使用Maven enforcer plugin检查类路径冲突。

© www.soinside.com 2019 - 2024. All rights reserved.