exception-handling - 文件组件的 [consumer.]bridgeErrorHandler 与 startingDirectoryMustExist 结合使用
问题描述
我有一条路线(使用 Camel 2.23.1),例如:
from("file://not.existing.dir?autoCreate=false&startingDirectoryMustExist=true&consumer.bridgeErrorHandler=true")
.onException(Exception.class)
.handled(true)
.log(LoggingLevel.ERROR, "...exception text...")
.end()
.log(LoggingLevel.INFO, "...process text...")
...
(我也试过&bridgeErrorHandler
了,因为根据最新的文档,consumer.
前缀似乎不再需要了。)
根据文档startingDirectoryMustExist
:
| 起始目录必须存在 | [...] 如果目录不存在,将引发异常。|
抛出以下异常:
org.apache.camel.FailedToCreateRouteException: Failed to create route route1:
Route(route1)[[From[file://not.existing.dir?autoCreate=false...
because of Starting directory does not exist: not.existing.dir
...
但是,尽管文档和它的描述被[consumer.]bridgeErrorHandler
传播给调用者,即既没有“ exception text
”也没有“ process text
”被打印。
有一个涵盖的单元测试FileConsumerBridgeRouteExceptionHandlerTest
consumer.bridgeErrorHandler
,所以我认为这基本上可以工作。难道它[consumer.]bridgeErrorHandler
不能与抛出的异常一起工作startingDirectoryMustExist
吗?
我是否必须按照“消费目录不存在时骆驼-停止路线”的答案[consumer.]exceptionHandler
中提到的那样编写自己的?
2014 年的邮件列表中还有一篇文章报告了与startingDirectoryMustExist
和类似的行为consumer.bridgeErrorHandler
。
更新
通过代码进行跟踪和调试后,我发现异常传播如下:
FileEndpoint.createConsumer()
throw new FileNotFoundException(...);
--> RouteService.warmUp()
throw new FailedToCreateRouteException(...)
--> DefaultCamelContext.doStart()
(re)throw e
--> ServiceSupport.start()
(re)throw e
我找不到任何bridgeErrorHandler
发挥作用的地方。
BridgeExceptionHandlerToErrorHandler
在的构造函数及其所有方法上设置断点handleException()
并不会在其中任何一个处停止。
我还缺少什么吗?
解决方案
您应该改用该directoryMustExist
选项,然后在轮询期间可能会出现错误,这是可以触发桥接错误处理程序的地方。在创建消费者期间检查该startingDirectoryMustExist
选项,因此在轮询之前以及桥接错误处理程序的操作位置。
另请参阅 JIRA 票证:https ://issues.apache.org/jira/browse/CAMEL-13174
推荐阅读
- r - 带有居中标题 R 的空绘图
- c# - 在自定义控件中公开 ItemContainerGenerator 的优雅方式
- spring-boot - spring boot 重定向到本地 url
- git - Git,检测到本地 HEAD 指向一个 GIT 标签
- android - 在开始时选中复选框的 Listview 项目
- cookies - 如何从网站获取所有 cookie,包括第 3 方?
- php - Paypal:权限不足,授权失败
- python - TypeError: 'int' object is not iterable map(), list() , set() 不能解决我的问题
- angularjs - AngularJS:需要来自语言代码的 angularjs 中的语言信息
- python - 我可以在编写之前估计一个 xml 文件的大小吗?