1.什么是CEP

CEP【是一种标准】 Complex Event Process 复杂事件处理 基于事件流进行数据处理

数据抽象成事件 -> 事件传递到CEP引擎 -> 引擎根据输入的事件和注册的处理模型进行处理 -> 结果

2.什么是Esper

Esper是对CEP标准的一种开源实现,基于事件流进行处理

3.什么是EPL

EPL Event Process Language 事件处理语言

4.Esper Client:

EPServiceProvider -> 事件处理Provider
  EPAdministrator   -> 事件管理员

5.EPL语法:

match_recognize 匹配识别

格式

match_recognize (
   [ partition by partition_expression [, partition_expression ] [,...] ]
   measures measure_expression as col_name [, measure_expression as col_name ] [,...]
   [ all matches ]
   [ after match skip (past last row | to next row | to current row) ]
   pattern ( variable_regular_expr [, variable_regular_expr ] [,...] )
   [ interval time_period [or terminated] ]
   [ define variable as variable_condition [, variable as variable_condition] [,...] ]
 )

例子
 
select * from TemperatureSensorEvent
 match_recognize (
   partition by device
   measures A.id as a_id, B.id as b_id, A.temp as a_temp, B.temp as b_temp
   pattern (AB)
   define
     B as Math.abs(B.temp - A.temp) >= 10)
    
    
A B C 认为是事件对象

pattern
   A (B|C)                               AB AC进行轮流
  (AB * C)                             贪婪匹配   0或多次
  (AB *? C)                            非贪婪匹配
   A {,3}
   A {2,}
   A +                                   一次货多次
   ?                                     0或一次               
   
   match_recognize_permute (A,B)         排列组合,等价于 (AB|BA)

interval 5 seconds                       定义5s间隔
   
Define
 
   B as Math.abs(B.temp - A.temp) >= 10) 表示B要做这些事
   
   Y as Y.price <prev(Y.price,2)      表示向前数两个

// Apple事件进入Esper,只有amount大于200的才能进入win:length,并且length长度为5  
    EPL:select * from Apple(amount>200).win:length(5)

// 统计进入的5个Apple事件,amount的总数是多少  
    select sum(amount) from Apple.win:length_batch(5)  
      
    // 统计进入的5个Apple事件,amount的总数是多少,并按照price分组  
    select price, sum(amount) from Apple.win:length_batch(5) group by price  
      
    // 统计进入的5个Apple事件,amount的总数和name,并按照price分组  
    select price, name, sum(amount) from Apple.win:length_batch(5) group by price

// context定义  
    create context esbtest2 partition by id from ESB  
      
    // 每当5个id相同的ESB事件进入时,统计price的总和  
    context esbtest select sum(price) from ESB.win:length_batch(5)  
      
    // 根据不同的id,统计3秒内进入的事件的平均price,且price必须大于10  
    context esbtest select avg(price) from ESB(price>10).win:time(3 sec)

create context esbtest group by id<0 as low, group by id>0 and id<10 as middle,group by id>10 as high from " + esb
 
    context esbtest select context.id,context.name,context.label, price from " + esb

create context NineToFive start (0, 9, *, *, *) end (0, 17, *, *, *)

跟随

EPL: select * from pattern[every a=example.FollowedEvent -> b=example.FollowedEvent(size < a.size)]  
 
Send Event1: FollowedEvent{size=1}  
 
Send Event2: FollowedEvent{size=3}  
 
Send Event3: FollowedEvent{size=2}  
 
Result:  
FollowedEvent{size=3} FollowedEvent{size=2}

为每一个做监听
    1).  
    select * from pattern[every LimitEvent]  
    // equals to  
    select * from LimitEvent  
      
    2).  
    every FollowedEvent(size > 2)  
      
    3).  
    every a=LimitEvent -> b=FollowedEvent(size > a.age)   等待后面那个跟随的事件

//TODO 具体笔记待补充

Esper学习笔记(未完成)相关推荐

  1. Esper学习笔记四:EPL语法(2)

    2019独角兽企业重金招聘Python工程师标准>>> 1.select 查询所有属性或特定属性 EPL的select和SQL的select很相近,SQL用*表示查询表的所有字段,而 ...

  2. Esper学习笔记三:EPL语法(1)

    2019独角兽企业重金招聘Python工程师标准>>> 1.EPL语法简介 EPL全称Event Processing Language,是一种类似SQL的语言,包含了SELECT, ...

  3. Esper学习笔记五:EPL语法(3)

    2019独角兽企业重金招聘Python工程师标准>>> 1.Aggregation 类似于SQL中的聚合函数,EPL中聚合函数格式如下: aggregate_function([al ...

  4. Java学习笔记(未完成.....)

    J2SE 5 与J2SE 1.5 J2SE 5 和J2SE 1.5其实都是指同一个版本的J2SE,前者是它的外部版本号,而后者是内部版本号. 从Java产生时,Sun公司发布了Java 1.0.而后都 ...

  5. 【原创】积性函数和狄利克雷卷积学习笔记 未完成

    Index 狄利克雷卷积和积性函数 〇.说在前面 一.一些定义 1.数论函数 2.积性函数与完全积性函数 (1)定义 (2)举例 ①(普通)积性函数 ②完全积性函数 (3)性质 二.狄利克雷卷积 1. ...

  6. 第6周学习笔记未完成

    低压系统接地制式的分类: 按接地制式划分,配电系统有TT.IT.TN(TN-S.TN-C.TN-C-S)五种. 第一个字母表示电源接地点对地的关系: T -表示直接接地: I -表示不接地或通过阻抗与 ...

  7. react render没更新_web前端教程分享React学习笔记(一)

    web前端教程分享React学习笔记(一),React的起源和发展:React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写 ...

  8. JavaScript:学习笔记(9)——Promise对象

    JavaScript:学习笔记(9)--Promise对象 引入Promise Primose是异步编程的一种解决方案,比传统的解决方案回调函数和事件更加合理和强大.如下面为基于回调函数的Ajax操作 ...

  9. Flowable学习笔记(二、BPMN 2.0-基础 )

    转载自  Flowable学习笔记(二.BPMN 2.0-基础 ) 1.BPMN简介 业务流程模型和标记法(BPMN, Business Process Model and Notation)是一套图 ...

最新文章

  1. C++简单使用Jsoncpp来读取写入json文件
  2. Java Review - 线程池资源一直不被释放案例源码分析
  3. 假如我是面试官,我会这样虐你
  4. 强制apt使用ipv4来更新
  5. 今年暑假不AC-贪心
  6. 微信小程序—day01
  7. 深度学习目标检测之 YOLO v4
  8. 如何给领导打造一款掌上财务管理驾驶舱?
  9. Time除了监控程序运行时间还能干这个?
  10. hashmap containsvalue时间复杂度_Java-HashMap面试问答
  11. 利用URL重写跟踪Session(多学一招)
  12. tomcat context 配置 项目部署
  13. idea apollo启动VM参数设置
  14. 运算放大器相关参数基本知识(一)
  15. java rome,ROME - RSS聚合类库 - 组件类库 - JAVA开源项目 - 开源吧
  16. paip.提升性能---list,arraylist,vector,linkedlist,map的选用..
  17. 推荐一款windows下好用的文件夹加密、文件加密软件(含使用说明)
  18. 彩灯控制器课程设计vhdl_基于VHDL的彩灯控制器设计与实现.doc
  19. 「 神器 」极简网速监控悬浮窗软件
  20. 关于盗墓笔记的那些事

热门文章

  1. 活动回顾 |《从 SRE 到 Anthos, 三堂课详解 DevOps 工具与实践》系列课程
  2. 一文教你怎么获得支付宝沙箱环境账号,刷着马爸爸的10000元大红包
  3. 图片格式转换软件下载
  4. 程序员大牛们的经典语录
  5. Intel AC8265网卡测速
  6. 博途PLC1200/1500PLC S型速度曲线变频器控制应用(SCL完整源代码)
  7. C# 生成彩色二维码
  8. 【装机必看】主板篇-电脑主板怎么选才最合适?
  9. 百度网盘不启动客户端下载大文件
  10. 新手linux安装vasp_centos 6.5 下安装VASP5.2