项目中曾经接触过Esper,对Esper相关的功能进行过简单的维护,现在花时间做一个简单的了解;
Esper 官网(http://www.espertech.com)中强调了一个CEP的概念,即复合事件处理全称:Complex Event Processing,简称:CEP。
CEP可以帮助我们:
了解趋势
发现机会
避免威胁
业界普遍将CEP应用在:
商业活动监控(BAM)
发掘群众智能
避免网络攻击
预防金融犯罪
实施系统动态校验
其他……
CEP是一种标准,Esper只是对这个标准的一种开源实现。
CEP的一个重要特点就是他是一个内存计算工具和类SQL语句,所以特点就很明显了实时分析和复杂处理。
esper 特性:
监听的事件源:包括简单的pojo,http,socket,db等,
监听的语法:语法规范类似于sql语法
Esper的中规则语法的实现是通过类Sql语句实现的,下面是一个精简的例子:
public class EPService {
public static void handlerEpser(){
EPServiceProvider epServiceProvider =EPServiceProviderManager.getDefaultProvider();
String expression ="select avg(price) from com.sun.springmvc.esper.pojo.OrderEvent.win:time(30 sec)";
EPStatement epStatement =epServiceProvider.getEPAdministrator().createEPL(expression);
epStatement.addListener(new UpdateListener() {
public void update(EventBean[] arg0, EventBean[] arg1) {
System.out.println("平均价格"+arg0[0].get("avg(price)"));
}
});
OrderEvent orderEvent = new OrderEvent();
orderEvent.setPrice(1f);
epServiceProvider.getEPRuntime().sendEvent(orderEvent);
orderEvent.setPrice(2f);
epServiceProvider.getEPRuntime().sendEvent(orderEvent);
orderEvent.setPrice(3f);
epServiceProvider.getEPRuntime().sendEvent(orderEvent);
orderEvent.setPrice(4f);
epServiceProvider.getEPRuntime().sendEvent(orderEvent);
}
public static void main(String[] args) {
handlerEpser();
}
}