`
Josh_Persistence
  • 浏览: 1657337 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Esper入门例子(二)

阅读更多

                                                               Esper入门例子

      说到Esper,不得不说一下CEP。CEP即Complex Event Process,中文意思就是“复杂事件处理”。听起来好像很复杂,实际上就是基于事件流进行数据处理,把要分析的数据抽象成事件,然后将数据发送到 CEP引擎,引擎就会根据事件的输入和最初注册的处理模型,得到事件处理结果。

     

       CEP是一种标准,Esper只是对这个标准的一种开源实现。除了Esper,很多大公司也有类似的商业软件实现,比如IBM,Sybase等等。CEP的一个重要特点就是他是一个内存计算工具和类SQL语句。内存计算可以说是一把双刃剑。好处自不必说,一个字:快!坏处也显而易见,数据有丢失的风险,而且还有容量的限制(实时计算其实并不受制于内存大小,而是得看如何对实时进行定义,也就是具体的业务来决定了)。所以如果业务不能容忍数据丢 失,那么高可用方案就必须做好,不过Esper的高可用很不好做,后面我将会说到。

       CEP的类SQL语句,可以理解为处理模型的定义与描述。这是运行在CEP引擎中的特殊语句,之所以叫他类SQL,是因为它和SQL确实很像,除了 select,insert,delete,update,而且也有avg,count等函数。所以对于会SQL的人来说,他的语法结构大致还是能猜出一 二的。在Esper中,这个句子叫做EPL,即Event Process Language。作为Esper的核心内容,对于它的讲解有三四百页的英文文档,所以之后我会慢慢向大家细细说明的。

     下面的场景是计算3个苹果的平均价格。

 

    package test;  
      
    import com.espertech.esper.client.EPAdministrator;  
    import com.espertech.esper.client.EPRuntime;  
    import com.espertech.esper.client.EPServiceProvider;  
    import com.espertech.esper.client.EPServiceProviderManager;  
    import com.espertech.esper.client.EPStatement;  
    import com.espertech.esper.client.EventBean;  
    import com.espertech.esper.client.UpdateListener;  
      
  
    class Apple  
    {  
        private int id;  
        private int price;  
      
        public int getId()  
        {  
            return id;  
        }  
      
        public void setId(int id)  
        {  
            this.id = id;  
        }  
      
        public int getPrice()  
        {  
            return price;  
        }  
      
        public void setPrice(int price)  
        {  
            this.price = price;  
        }  
    }  
      
    class AppleListener implements UpdateListener  
    {  
      
        public void update(EventBean[] newEvents, EventBean[] oldEvents)  
        {  
            if (newEvents != null)  
            {  
                Double avg = (Double) newEvents[0].get("avg(price)");  
                System.out.println("Apple's average price is " + avg);  
            }  
        }  
      
    }  
    public class Test {  
      
        public static void main(String[] args) throws InterruptedException {  
            EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider();  
      
            EPAdministrator admin = epService.getEPAdministrator();  
      
            String product = Apple.class.getName();  
            String epl = "select avg(price) from " + product + ".win:length_batch(3)";  
      
            EPStatement state = admin.createEPL(epl);  
            state.addListener(new AppleListener());  
      
            EPRuntime runtime = epService.getEPRuntime();  
      
            Apple apple1 = new Apple();  
            apple1.setId(1);  
            apple1.setPrice(5);  
            runtime.sendEvent(apple1);  
      
            Apple apple2 = new Apple();  
            apple2.setId(2);  
            apple2.setPrice(2);  
            runtime.sendEvent(apple2);  
      
            Apple apple3 = new Apple();  
            apple3.setId(3);  
            apple3.setPrice(5);  
            runtime.sendEvent(apple3);  
        }  
    }  

 

下一讲将会讲解Esper的事件。

0
0
分享到:
评论

相关推荐

    esper简单入门之demo

    《esper简单入门之demo》 Esper是一款强大的事件处理引擎,广泛应用于实时分析和复杂事件处理(CEP)领域。本文将通过一个简单的demo来引导初学者了解如何使用Esper进行事件处理。 首先,理解Esper的核心概念是至...

    基于Esper教程范例代码的JavaEsper代码

    Esper是一种实时复杂事件处理(CEP)引擎,它允许开发者在Java应用程序中处理和分析持续流入的数据流,从而识别模式、趋势和异常。在这个基于Esper的教程中,我们将探讨如何使用Java来实现Esper的功能,特别是针对...

    Esper 最新帮助文档

    #### 二、事件表示 **2.1 事件基础Java对象** Esper支持将Java对象作为事件的底层表示形式。这些对象可以是普通的Java类,也可以是实现了特定接口的类。通过这种方式,开发者可以直接使用现有的Java对象来创建事件...

    Esper引擎使用演示

    通过这些例子,你可以学习如何定义事件类型,如何处理事件输入和输出,以及如何设置事件窗口来处理时间序列数据。 在实际应用中,Esper常被用在金融交易监控、物联网数据分析、网络流量检测等领域。例如,在金融...

    esper_adapter_reference

    ### Esper Adapter Reference:深入了解Esper 4.3.0中的Adapter技术 Esper是一个高性能的事件处理引擎,专为实时数据分析而设计。在Esper 4.3.0版本中,Adapter扮演着连接Esper与外部数据源或目标的关键角色。它们...

    esper所有jar包

    Esper 是一个强大的事件处理引擎,它主要用于实时流数据处理,尤其在复杂事件处理(CEP,Complex Event Processing)领域有着广泛的应用。Esper 提供了一种编程模型,允许开发者在持续流入的数据流中识别模式、趋势...

    java使用esper实现事件分批处理

    Java 使用 Esper 实现事件分批处理是大数据实时分析领域中的一种常见技术,Esper 是一个强大的事件处理引擎,尤其适用于复杂事件处理(CEP,Complex Event Processing)。在 Java 应用程序中集成 Esper 可以帮助我们...

    esper 源码

    esper 源码 esper 源码 官网源代码

    Esper源码 Eclipse工程

    Esper是一款广泛使用的开源复杂事件处理(CEP)引擎,它允许开发者在实时数据流中检测模式、趋势和异常,从而实现对动态业务环境的快速响应。Esper源码的分析对于理解其内部工作原理、优化性能以及进行自定义扩展至...

    esper参考手册esper_reference.pdf

    Esper是EsperTech公司使用Java开发的事件流处理(ESP:Event Stream Processing)和复杂事件处理(CEP:Complex Event Processing)引擎。

    Esper overview

    #### 二、CEP 的应用场景 1. **算法交易**:利用实时市场数据自动执行股票交易策略。 2. **信用卡欺诈检测**:通过分析用户行为模式来识别潜在的欺诈活动。 3. **业务活动监控**:跟踪关键业务指标,以便及时发现...

    esper和jms做的小demo

    在IT行业中,Esper和JMS是两种非常重要的技术,它们在实时事件处理和消息传递领域发挥着关键作用。在这个名为"esper和jms做的小demo"的项目中,我们将会探讨这两个技术如何结合在一起,以模拟一个温度控制系统。 ...

    esper语法pdf版(下)

    #### 二、API概览 Esper提供了以下主要接口: 1. **事件和事件类型接口**:这部分内容在文档的第13.5节进行了介绍,涵盖了事件和事件类型的定义及使用方法。 2. **管理接口**:用于创建和管理EPL(Esper处理语言...

    esper复杂事件处理引擎参考

    在本文档中,我们将详细介绍esper复杂事件处理引擎的相关知识点。esper是一个用于复杂事件处理(Complex Event Processing, CEP)的框架,它在面向服务的架构(SOA)中扮演着不可或缺的角色。 首先,让我们了解什么是...

    esper reference4.6.0

    ### 关于大规模数据处理工具esper的应用讲解 #### 技术概览 Esper是一个高性能、实时的复杂事件处理(Complex Event Processing,简称CEP)引擎,适用于大规模数据流的分析和处理。它允许用户通过类似SQL的查询...

    Esper相关包

    2. `antlr-runtime-3.4.jar`:ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。Esper使用ANTLR来解析EPL语句。 3. `commons-collections-3.2.2.jar`:Apache Commons ...

    esper官方文档

    ### esper官方文档解析 #### 技术概览 **Esper**是一款强大的复杂事件处理(Complex Event Processing,简称 CEP)引擎,它提供了一种高效的方式来处理和分析大量的实时数据流。Esper的设计目的是为了更好地理解和...

    esper核心jar文件

    这是esper官网上核心jar文件,有需要的请下载使用

    esper5个核心开发包

    esper5个核心开发包 antlr-runtime-4.1.jar;cglib-nodep-3.1.jar;commons-logging-1.1.1.jar;esper-5.0.0.jar;log4j-1.2.17.jar

Global site tag (gtag.js) - Google Analytics