启动骆驼路线时,路线状态会更改。但是,可能会正确启动路由,但是在启动/运行期间会出现日志警告/错误(例如,启动FTP组件时密码错误)。
这些事件记录到控制台/日志文件中。我想以编程方式(在Camel DSL之外)获得这些事件。例如getEvents(routeID,typeEvent,xNumberOfEvents){}。
骆驼是否将这些事件缓存在某个地方?我可以通过ManagedRouteMBean之类检索事件吗?还是应该使用事件通知程序(类似于RiderEventNotifier示例)或某种错误处理程序来编写自己的缓存机制?
例如将以下消息写入日志:
2018-10-11 22:15:24.719 WARN 3820 --- [ XNIO-2 task-12]
o.a.c.component.file.remote.FtpConsumer : Error auto creating directory:
due File operation failed: 530 This server does not allow plain FTP. You have
to use FTP over TLS.
. Code: 530. This exception is ignored.
org.apache.camel.component.file.GenericFileOperationFailedException: File
operation failed: 530 This server does not allow plain FTP. You have to use
FTP over TLS.
. Code: 530
上述问题是路由正常启动。所以
ManagedRouteMBean route = context.getManagedRoute(id, ManagedRouteMBean.class);
RouteError lastError = route.getLastError();
不返回错误。
这似乎也不是交换中的错误,因此错误处理程序或事件通知程序不会拦截这些消息。
我想通过routeid拦截(并缓存)此类消息。
答案 0 :(得分:0)
有一种方法可以通过使用所谓的bridgeErrorHandler的普通错误处理程序来处理此类警告/错误。参见:http://camel.apache.org/why-does-my-file-consumer-not-pick-up-the-file-and-how-do-i-let-the-file-consumer-use-the-camel-error-handler.html