从Apache Camel路由检索最近的事件

时间:2018-10-11 09:57:48

标签: events apache-camel

启动骆驼路线时,路线状态会更改。但是,可能会正确启动路由,但是在启动/运行期间会出现日志警告/错误(例如,启动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拦截(并缓存)此类消息。

1 个答案:

答案 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