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的事件。
相关推荐
《esper简单入门之demo》 Esper是一款强大的事件处理引擎,广泛应用于实时分析和复杂事件处理(CEP)领域。本文将通过一个简单的demo来引导初学者了解如何使用Esper进行事件处理。 首先,理解Esper的核心概念是至...
#### 二、事件表示 **2.1 事件基础Java对象** Esper支持将Java对象作为事件的底层表示形式。这些对象可以是普通的Java类,也可以是实现了特定接口的类。通过这种方式,开发者可以直接使用现有的Java对象来创建事件...
通过这些例子,你可以学习如何定义事件类型,如何处理事件输入和输出,以及如何设置事件窗口来处理时间序列数据。 在实际应用中,Esper常被用在金融交易监控、物联网数据分析、网络流量检测等领域。例如,在金融...
### Esper Adapter Reference:深入了解Esper 4.3.0中的Adapter技术 Esper是一个高性能的事件处理引擎,专为实时数据分析而设计。在Esper 4.3.0版本中,Adapter扮演着连接Esper与外部数据源或目标的关键角色。它们...
Esper 是一个强大的事件处理引擎,它主要用于实时流数据处理,尤其在复杂事件处理(CEP,Complex Event Processing)领域有着广泛的应用。Esper 提供了一种编程模型,允许开发者在持续流入的数据流中识别模式、趋势...
Esper是一种实时复杂事件处理(CEP)引擎,它允许开发者在Java应用程序中处理和分析持续流入的数据流,从而识别模式、趋势和异常。在这个基于Esper的教程中,我们将探讨如何使用Java来实现Esper的功能,特别是针对...
esper 源码 esper 源码 官网源代码
Esper是一款广泛使用的开源复杂事件处理(CEP)引擎,它允许开发者在实时数据流中检测模式、趋势和异常,从而实现对动态业务环境的快速响应。Esper源码的分析对于理解其内部工作原理、优化性能以及进行自定义扩展至...
Esper是EsperTech公司使用Java开发的事件流处理(ESP:Event Stream Processing)和复杂事件处理(CEP:Complex Event Processing)引擎。
#### 二、CEP 的应用场景 1. **算法交易**:利用实时市场数据自动执行股票交易策略。 2. **信用卡欺诈检测**:通过分析用户行为模式来识别潜在的欺诈活动。 3. **业务活动监控**:跟踪关键业务指标,以便及时发现...
在IT行业中,Esper和JMS是两种非常重要的技术,它们在实时事件处理和消息传递领域发挥着关键作用。在这个名为"esper和jms做的小demo"的项目中,我们将会探讨这两个技术如何结合在一起,以模拟一个温度控制系统。 ...
#### 二、API概览 Esper提供了以下主要接口: 1. **事件和事件类型接口**:这部分内容在文档的第13.5节进行了介绍,涵盖了事件和事件类型的定义及使用方法。 2. **管理接口**:用于创建和管理EPL(Esper处理语言...
Java 使用 Esper 实现事件分批处理是大数据实时分析领域中的一种常见技术,Esper 是一个强大的事件处理引擎,尤其适用于复杂事件处理(CEP,Complex Event Processing)。在 Java 应用程序中集成 Esper 可以帮助我们...
在本文档中,我们将详细介绍esper复杂事件处理引擎的相关知识点。esper是一个用于复杂事件处理(Complex Event Processing, CEP)的框架,它在面向服务的架构(SOA)中扮演着不可或缺的角色。 首先,让我们了解什么是...
### 关于大规模数据处理工具esper的应用讲解 #### 技术概览 Esper是一个高性能、实时的复杂事件处理(Complex Event Processing,简称CEP)引擎,适用于大规模数据流的分析和处理。它允许用户通过类似SQL的查询...
2. `antlr-runtime-3.4.jar`:ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。Esper使用ANTLR来解析EPL语句。 3. `commons-collections-3.2.2.jar`:Apache Commons ...
### esper官方文档解析 #### 技术概览 **Esper**是一款强大的复杂事件处理(Complex Event Processing,简称 CEP)引擎,它提供了一种高效的方式来处理和分析大量的实时数据流。Esper的设计目的是为了更好地理解和...
这是esper官网上核心jar文件,有需要的请下载使用
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