【发布时间】:2014-05-28 14:31:58
【问题描述】:
我目前在 Storm 拓扑中使用 Esper,并且我知道有一个名为 update() 的方法回调,当 Esper 产生结果时会调用它。
我一直想知道如果 Esper 引擎本身出现错误会发生什么。
是否有我可以覆盖并捕获Exception 的错误回调?
或者我最好的选择是简单地将sendEvent() 调用包装在try-catch 中,然后相应地处理Exception?
【问题讨论】:
我目前在 Storm 拓扑中使用 Esper,并且我知道有一个名为 update() 的方法回调,当 Esper 产生结果时会调用它。
我一直想知道如果 Esper 引擎本身出现错误会发生什么。
是否有我可以覆盖并捕获Exception 的错误回调?
或者我最好的选择是简单地将sendEvent() 调用包装在try-catch 中,然后相应地处理Exception?
【问题讨论】:
进一步阅读后,我可以看到 Esper 有异常处理的概念:
这应该满足我的用例并捕获任何内部 Esper 异常。
【讨论】:
是的,Esper 为Exception Handling 提供了一种方式。
您可以为引擎注册一个或多个异常处理程序,以便在遇到处理连续执行语句的异常时调用
您可以像下面这样注册 ExceptionHandlerFactory。
Configuration config = new Configuration();
config.getEngineDefaults().getExceptionHandling().addClass(MyCEPEngineExceptionHandlerFactory.class);
您应该在引擎默认配置中给出实现com.espertech.esper.client.hook.ExceptionHandlerFactory 接口的每个类的全限定类名。
更多详情,请阅读documentation。 .
【讨论】: