esper学习之十四:pattern

esper学习之十四:pattern

ID:34722862

大小:56.51 KB

页数:8页

时间:2019-03-10

esper学习之十四:pattern_第1页
esper学习之十四:pattern_第2页
esper学习之十四:pattern_第3页
esper学习之十四:pattern_第4页
esper学习之十四:pattern_第5页
资源描述:

《esper学习之十四:pattern》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、前述的几篇关于EPL语法的文章,如果各位都掌握得很好,那基本上应付不少业务场景应该说是轻轻松松。但是总有那么些复杂场景只靠那点基础语法还是搞不定,比如说:某个用户在请求登录服务时,n秒内连续m次未登录成功,可视为该ip在暴力破解密码。又或者:用户在页面上的操作间隔超过n秒即认为该用户已关闭该网页。也许上面的几个例子不够好或者已经有别的方式实现,但是Esper确实能够将其抽象成多个关联的事件进行处理。像这类具有关联性事件的处理,即是本篇的中心内容——Pattern,它就像一个我们自定的模板,如果事件按照模板进入引擎,就会触发监听器,

2、我们就能捕捉到信号并进行接下来的处理。      今天这篇主要讲讲一些基础知识以便领大家入门,具体的语法下篇会有详细说明。1.PatternAtomsandPatternoperatorsPattern是通过原子事件和操作符组合在一起构成模板。原子事件有3类,操作符有4类,具体如下:原子事件:1).普通事件:包括POJO,Map,Array,XML2).时间事件:包括间隔n个时间单位、crontab3).自定义插件:用于观察特定事件的发生操作符:1).重复操作符:every,every-distinct,[num]anduntil

3、2).逻辑操作符:and,or,not3).顺序操作符:->(Followedby)4).事件生命周期操作符:timer:within,timer:withinmax,while-expression,自定义插件关于操作符,自然会有优先级,具体如下:PrecedenceOperatorDescriptionExample1guardpostfixwheretimer:withinandwhile(expression)(incl.withinmaxandplug-inpatternguard)MyEventwheretimer:w

4、ithin(1sec)2unaryevery,notevery,distincteveryMyEventtimer:interval(5min)andnotMyEvent3repeat[num],until[5]MyEvent[1..3]MyEventuntilMyOtherEvent4andandevery(MyEventandMyOtherEvent)5ororevery(MyEventorMyOtherEvent)6followedby->every(MyEvent->MyOtherEvent)上面的内容各位可以先有个印象,

5、方便理解之后的详解。2.PatternFilterExpressionPattern的Filter表达式和普通的表达式没有区别,我就不展开讲解了,各位看看下面几个例子就好,除了Filter之外的东西暂时不用关心是什么意思。1).everye1=RfidEvent->e2=RfidEvent(assetId=e1.assetId)2).everye1=RfidEvent->e2=RfidEvent(MyLib.isInRadius(e1.x,e1.y,x,y)andzonein(1,e1.zone))3).every(RfidEve

6、nt(zone>1)andRfidEvent(zone<10))3.ControllingEventConsumption      上面说到了Filter,因为Pattern可以由多个原子事件组成,那么Filter自然也会有多个,正常情况下,所有的Filter都会对进入引擎的事件进行判定,但是我们也有只需要判定一次的时候,只要满足了某个Filter,那么其他的Filter就不用管这个事件了。Esper考虑到了这个需求,我们只需要在Filter表达式后面加个@consume注解即可,此注解可以跟随数字,表示过滤的优先级。默认优先级

7、为1,数值越大优先级越高。为了结合上面几节的知识,我给了个完整的实例:[java]viewplaincopy1.package example;  2.  3.import com.espertech.esper.client.EPAdministrator;  4.import com.espertech.esper.client.EPRuntime;  5.import com.espertech.esper.client.EPServiceProvider;  6.import com.espertech.esper.cli

8、ent.EPServiceProviderManager;  7.import com.espertech.esper.client.EPStatement;  8.import com.espertech.esper.client.EventBe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。