Esper 浅析

项目中曾经接触过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();
    }

}
文章目录
,