`
Josh_Persistence
  • 浏览: 1651332 次
  • 性别: 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 最新帮助文档

    #### 二、事件表示 **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 提供了一种编程模型,允许开发者在持续流入的数据流中识别模式、趋势...

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

    Esper是一种实时复杂事件处理(CEP)引擎,它允许开发者在Java应用程序中处理和分析持续流入的数据流,从而识别模式、趋势和异常。在这个基于Esper的教程中,我们将探讨如何使用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处理语言...

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

    Java 使用 Esper 实现事件分批处理是大数据实时分析领域中的一种常见技术,Esper 是一个强大的事件处理引擎,尤其适用于复杂事件处理(CEP,Complex Event Processing)。在 Java 应用程序中集成 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