Esper复杂事务处理引擎一小时入门
什么是Esper
想要认识Esper,先要了解[CEP(Complex Event Processing)][1],引用里给出的是知乎的一个回答,笔者感觉比一些官方的、百科的解答更为贴切易懂。
Esper就是CEP的一个java的开源实现。
Esper官方网址:http://www.espertech.com/
Esper的特性
在探究Esper特性之前,我们先总结一下复杂事件的特性:
- 类型多样,不易建模
- 场景不可控,随时可能新增场景
- 逻辑复杂,难于描述
既需要汇总规律,又不准数据落地。
场景举例:
股市实时K线图、网站恶意操作监测、用户登入控制、实时数据统计等
针对复杂事件的这些特性,Esper具有相应的性质:
- 实时响应
- 极速扩展新事件
- 语法描述能力强大、类sql
事件和处理流程
一个基本的例子
引用Esper就不说了,直接搜maven esper,添加以来就好。
/*定义事件模型*/
public class Coder {
private String Name;
private int age;
private double Salary;
//省略getter/setter
}
//
public class HelloEsperApp {
public static void main(String[] args) throws InterruptedException {
EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider();
EPAdministrator admin = epService.getEPAdministrator();
//指定事件模型
String coderModel = Coder.class.getName();
//描述复杂事件
String epl = "select name,salary,age from " + coderModel;
EPStatement state = admin.createEPL(epl);
//添加事后处理
state.addListener(new HelloEsperListener());
EPRuntime runtime = epService.getEPRuntime();
//模