Esper工作原理说明
作者:互联网
Esper工作原理说明
规则生成逻辑
相关代码: com.espertech.esper.core.service.EPAdministratorImpl
Filter语句处理相关逻辑: com.espertech.esper.filter
view创建及处理相关逻辑: com.espertech.esper.view
通过调用epService.getEPAdministrator().createEPL()方法来创建规则。
新建一个规则时,esper会对epl语句进行解析,生成一个EPStatement对象,并启动规则。在规则启动过程中,会提取出规则中的filter语句,转化生成FilterValueSet,将其保存到engine中,用于后续匹配检查处理。
对于统计类规则,我们使用的是externally-timed window。除了处理filter语句,还会在EPStatement对象内部维护一个ExternallyTimedWindowView,内部有一个TimeWindow对象,内置一个队列,用于保存数据。
filter语句处理
统计类规则,创建view
事件处理逻辑
相关代码: com.espertech.esper.core.service.EPRuntimeImpl
聚合处理相关逻辑; com.espertech.esper.epl.agg.service
通过调用epService.getEPRuntime().sendEvent()方法来发送事件。
对于普通模板类规则,当有一个事件过来时,遍历当前engine中的filter对象,找出match的规则,之后,遍历所有match的规则,进行处理,取出规则中的输出,触发回调函数,处理结束。
统计类规则,当有一个事件到来时,前面处理流程跟一对一类似,但在match处理时,会根据时间函数,实时清理队列中的过期数据,写入新数据,同时更新聚合结果。当聚合结果满足条件时,触发回调函数,处理结束。
普通模板事件处理
统计类模板view部分事件处理
标签:espertech,处理,Esper,esper,说明,规则,原理,com,filter 来源: https://blog.51cto.com/14743302/2487093