java学习日志5——esper30分钟入门example

Esper3.5.0(一)--技术简介 最近做项目,涉及到一些关于CEP的知识。总结一下。esper的官网 http://www.espertech.com/1.1介绍CEP和事件流分析Esper引擎是为了满足对事件进行分析并做出反应等这些应用需求而产生的。这些应用要求事实或接近事实处理事件(或消息)。有时候是为了应对复杂事件处理(CEP)和事件流分析的。关键要考虑这些类型应用的(高)吞吐量、(低)响应时间和需求逻辑的复杂程度(复杂计算)。esper可以用在股票系统、风险监控系统等等要求实时性比较高的系统中。1.2 CEP和关系数据库关系型数据库 阅读详情

esper官网 可下载jar包和documentation http://www.espertech.com/esper。

eclipse 新建mawen项目test。

 

在 pom.xml文件中添加如下依赖:

  <dependencies>  
	 <dependency>
	 <groupId>com.espertech</groupId>
	 <artifactId>esper-common</artifactId>
	 <version> 8.1.0 </version>
	 </dependency>
	<dependency>
	 <groupId>com.espertech</groupId>
	 <artifactId>esper-compiler</artifactId>
	 <version> 8.1.0  </version>
	</dependency>
	<dependency>
	 <groupId>com.espertech</groupId>
	 <artifactId>esper-runtime</artifactId>
	 <version>  8.1.0  </version>
	</dependency>
  </dependencies>

 

选中test project,右键Propeties->Mawen->Update Project 确定更新依赖,自动下载依赖包。

创建事件类TickData

import java.text.SimpleDateFormat;

import java.util.Date;
import java.util.Random;

public class TickData {
	
	String symbol;
	double askPrice;
	double bidPrice;
    String time;	
    public String getSymbol(){
    	 return symbol;
    }
    
    public double getAskPrice(){
    	 return askPrice;
    }
    public double getBidPrice(){
   	 return bidPrice;
    }
    
    public String getTime() {
    	return time;
    }
           
    public TickData() {
    	String [] symbolArray = {"A","B","C"};
    	long seed = System.currentTimeMillis();
    	Random rint = new Random(seed);
    	int i = rint.nextInt(3);
    	this.symbol = symbolArray[i];
    	
    	this.askPrice = 10;
    	this.bidPrice = 9.99;
    	
    	Date date = new Date();
    	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
    	this.time = sdf.format(date);
    	
    }
    public TickData(TickData oldTickData){
    	this.symbol=oldTickData.symbol;
    	Date date = new Date();
    	//年月日 时分秒
    	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
    	this.time = sdf.format(date);
    	long seed = System.currentTimeMillis();
    	Random rint = new Random(seed);
    	double delta = (rint.nextInt(3)-1.0)/100.0;
    	this.askPrice=oldTickData.askPrice+delta;
    	this.bidPrice=oldTickData.bidPrice+delta;
    }
    
    

}

测试esper

 

package com.yss.fengxin;

import com.espertech.esper.common.client.EPCompiled;
import com.espertech.esper.common.client.configuration.Configuration;
import com.espertech.esper.compiler.client.CompilerArguments;
import com.espertech.esper.compiler.client.EPCompileException;
import com.espertech.esper.compiler.client.EPCompiler;
import com.espertech.esper.compiler.client.EPCompilerProvider;
import com.espertech.esper.runtime.client.EPDeployException;
import com.espertech.esper.runtime.client.EPDeployment;
import com.espertech.esper.runtime.client.EPEventService;
import com.espertech.esper.runtime.client.EPRuntime;
import com.espertech.esper.runtime.client.EPRuntimeProvider;
import com.espertech.esper.runtime.client.EPStatement;




public class TestEsper {

	public static void main(String[] args) throws  InterruptedException {
		// TODO Auto-generated method stub

		//初始化complier 
		EPCompiler compiler = EPCompilerProvider.getCompiler();		
		Configuration configuration = new Configuration();
		configuration.getCommon().addEventType(TickData.class);
		
		CompilerArguments complierArgs = new CompilerArguments(configuration);
		
       //编译EPL
EPCompiled epCompiled;
		try {
		 epCompiled = compiler.compile("@name('my-statement') select symbol, askPrice, bidPrice, time from TickData", complierArgs);
		}
		catch (EPCompileException ex) {
		 // handle exception here
		 throw new RuntimeException(ex);
		}
	
        
        //初始化运行时环境
		EPRuntime epRuntime = EPRuntimeProvider.getDefaultRuntime(configuration);
		
		
		
		EPDeployment deployment;
		try {
		 deployment = epRuntime.getDeploymentService().deploy(epCompiled);
		}
		catch (EPDeployException ex) {
		 // handle exception here
		 throw new RuntimeException(ex);
		}
		
		
		EPStatement epStatement = epRuntime.getDeploymentService().getStatement(deployment.getDeploymentId(), "my-statement");
		epStatement.addListener( (newData, oldData, statement, runtime) -> {
			String symbol = (String) newData[0].get("symbol");
		    double askPrice = (double) newData[0].get("askPrice");
		    double bidPrice = (double) newData[0].get("bidPrice");
		    String time = (String) newData[0].get("time");
		    System.out.println(String.format("symbol: %s, askPrice: %f, bidPrice: %f, time: %s ", symbol, askPrice,bidPrice,time));
				});
		
		EPEventService epEventService = epRuntime.getEventService();

        
        //定义初始事件对象 用于迭代构造新事件对象 
       TickData tickData0 = new TickData();
        //循环模拟事件流
        for (int i = 0; i < 10; i++) {
        	TickData dataTick = new TickData(tickData0);  	
            epEventService.sendEventBean(dataTick,"TickData");
        }   
		
	}

}


运行会有相应的结果显示。

参考资料:官方documentation esper_reference.pdf

 

 

 

Esper入门概述——篇1 关系型数据库不适合每秒成百上千的数据量的查询,Esper引擎允许应用存储查询并运行数据通过,来代替存储数据并执行查询存储数据的工作方式。 Esper的事件模式匹配和事件流查询虽然是应对不同需求的,但是都是通过相同的API来实现的。 事件驱动应用服务器是为每秒需要处理超过100,000个事件的服务器提供一个运行时和多种支撑基础设施服务(如传输、安全、事件日志、高可靠性和连接、持久化等)。事件驱动 阅读详情

相关推荐

别再手动备份了!用Python脚本批量导出华为/华三交换机配置(附完整代码)

本文详细介绍了如何使用Python脚本实现华为/华三交换机配置的自动化备份,大幅提升网络运维效率。通过paramiko库建立SSH连接,结合pandas处理设备清单,实现配置的批量导出与规范化存储,解决传统手动备份耗时易错的问题。

weixin_28737603的博客 450

esper小demo

com.espertech.esper.client.Configuration config = new com.espertech.esper.client.Configuration(); 该对象应该是esper的配置类,可以通过 config.addEventType(“StockTick”, Tick.class); 配置指定的事件类,或者通过config.addEventTy...

q1165902484的嫖客 536

Hadoop生态系统-新手快速入门(含HDFS、HBase系统架构)

Hadoop简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量...

Hadoop环境搭建教程 472

Esper事件处理引擎_1_JavaBean 数据结构处理

参考博客栏目 http://blog.youkuaiyun.com/column/details/esper.html

2.wa 2103

点云PCL库学习-双目图像转化为点云PCD并显示

文章目录 双目视觉模型 代码实现 总结 参考文章 一、双目视觉模型 和RGBD相机主动发射光线实现测距不同,双目测距原理通过配置立体摄像头(通常由左眼相机和右眼相机两个水平放置的相机组成)来获取一对同一场景中的二维图像,再基于同一空间点在两个坐标系下的视差来计算深度。双目测距的示意图和数学表达式如下所示: 双目相机的成像示意图 上述示意图描述了一个空间点在左右两目相机中位置之间的成像关系,根据相似三角形原理可得: 其中,f和b分别为相机焦距和双目相机基线,d为空间点在两个坐标系下

weixin_41957687的博客 6948

【图像去噪】基于加权核范数最小化算法实现图像去噪附matlab代码

1 简介 WNNM是一种约束矩阵奇异值稀疏性的低秩算法,在NNM理论基础上增加了核范数权重,有效利用了自然图像的先验信息并提高了核范数的灵活性. 2 部分代码 ​clcclear allclose allnSig = 100;O_Img = double(imread('Monarch.png'));​randn('seed', 0);N_Img = O_Img + nSig* randn(size(O_Img)); ..

qq_59747472的博客 3118

esper(复杂事件处理引擎)简介

Esper是一个复杂事件处理引擎,用于对同一类型的多个对象进行统计分析。 要统计的多个事件(一个事件通常对应着一个对象)会存储在一个队列中,这里叫它EQueue。 EPL EPL,Event Process Language,事件处理语言。类似于SQL,描述了esper要分析的内容。 统计窗口为.win:length_batch(n)时,每攒够n个事件统计一次,统计过后队列EQueue清空

yichudu 7955

Microsemi Libero使用技巧11——CoreUARTAPB RX管脚分配时不显示

调用串口IP核CoreUARTAPB,并例化到顶层设计,发现UART_RX管脚在进行管脚分配时没有显示出来,最后发现是CoreAPB3总线IP核配置不对导致,改为如下配置后正常。

whik1194的博客 759

复杂事件处理 java_复杂事件处理引擎—Esper入门

说明:以下内容,可以参考Esper官方网站《Qucik start &Tutorial 》(顺序做了部分调整)。 PS:因为英语水平有限(大学期间刚过CET4的英语小盲童一枚),翻译很烂(自己都感觉不能直视),描述不清的,可以随时问。一有时间,将给予解释。1、什么是Esper?Esper是一个事件流处理和事件关联的引擎(CEP,complexeventprocessing复合事件处...

weixin_39819327的博客 737

Far planner 代码系列(35)动态障碍物预处理_激光雷达部分

主要讲解动态障碍物在激光雷达部分的剔除机制

博客 1059

NVIDIA Isaac Sim 入门教程 - 运动生成控制器(Motion Generators)

机器人任务通常在任务空间中根据所需的末端执行器轨迹进行定义,而控制动作则在关节空间中执行。这自然会产生关节空间和任务空间(操作空间)控制方法。然而,要利用运动控制成功执行交互任务,往往需要对机械臂及其环境都建立精确的模型。虽然可以知道足够精确的机械臂模型,但很难获得详细的环境描述 [SSVO09]。可以通过在交互过程中引入顺应行为来克服这种不匹配造成的规划错误。虽然顺应性可以通过机器人的结构(如弹性致动器、软机械臂)被动实现,但我们对侧重于主动交互控制的控制器设计更感兴趣。这些设计大致分为注释。

2506_90492529的博客 1578

esper简单入门之demo

采用maven项目管理模式 pom配置如下: [code="java"] [color=blue] 4.0.0 org.wolf.esper wolf-esper 0.0.1-SNAPSHOT com.espertech esper 4.0.0 jar compile c...

flyandrun的专栏 423

iStoreOS等软路由插件卸载的残留?分享一款软路由高级卸载工具,自定义卸载,轻松解决卸载残留问题

iStoreOS用户看过来!👀 还在被插件包残留困扰吗?本文分享一款“高级卸载”的插件,助你深度清理iStoreOS系统,彻底解决软件卸载不净的痛点,告别频繁恢复出厂设置的烦恼!🚀

XiaoqiangClub的博客 1546

Esper学习之一:Esper介绍

由于项目需要,我开始了学习Esper的任务。刚开始觉得他是个很高级的东西,学了一段时间后发现他确实是很高级的东西。不过貌似在国内的应用很少,网上都查不到什么资料的,所以我觉得在博客里写一下自己的学习的收获,一是总结所学知识点,二是分享给更多的学习者,毕竟好东西不能这样被埋没了。今天就先来简单介绍一下Esper是什么玩意儿。        说到Esper,不得不说一下CEP。CEP即Complex

luonanqin的专栏 5万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Esper开发之一

参考: esper官网:http://esper.codehaus.org/ 说明: 本文定位:初学者 本文主要内容:介绍Esper的基本概念和应用背景,Esper的学习步骤。在文章最后,介绍了Esper的"HelloWorld"。   一、CEP和ESP的概念     CEP,:Complex Event Process,复杂事件处理,是一种新兴的

ccecwg的专栏 890

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Esper使用技巧

 win:参数 win:length win:length(10) 滑动窗口,存最近的10条数据 win:length_batch win:length_batch(10) 间隔窗口,存满10条触发查询 win:time win:time(5 sec) 滑动窗口,存最近5秒内的数据 单位:年/year  月/month  周/week 天/day 小时/hour 分/min 秒

swcj的专栏 4616

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Esper入门介绍及热身(一)

一、什么是Esper         Esper的官网定义: Esper is a component for CEP and ESP applications,中文意思是:Esper是用于CEP(复杂事件处理)和ESP(事件流处理)应用程序的组件。         Esper是一个Java开发的事件流处理(ESP:Event Stream Processing)和复杂事件处理(CEP:...

Josh_Persistence 1199

Esper学习笔记01-概念

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33819479的博客 382

Esper解析

最近在看论文,发现文中有些语言自己未曾见过,经过一番搜索,才发觉是自己接触到了新知识。 官网: http://esper.codehaus.org/about/esper/esper.html Esper为一款开源的实时分析引擎。是一个强大的支持ESP(Event Stream Process)和CEP(Complex Event Process)分析的引擎,其EPL解析语言可以通过简单的写一条类

luoduoduojiayou的专栏 938

Esper学习 -- 第一章 Esper初体验

Esper 参考 翻译自:Esper Version 7.1.0 参考手册,详情可以查询:EsperTech Inc. (http://www.espertech.com) 第一章 起始 1.1 复杂事件处理(CEP)简介 Esper引擎被应用程序用来分析和处理事件。它的一些典型应用场景如下: 业务流程管理和自动化处理(处理监控事件、BAM、报告一些异常等); 金融领域:交易行为、...

HackerSaillen的专栏 1928

Esper简介,优缺点,及使用案例

Esper是一个高性能的复杂事件处理(CEP)和事件流处理(ESP)引擎,它允许用户从广泛的数据源实时处理和分析高频率的事件流。Esper使用一种声明式的查询语言,非常类似于SQL,但针对实时数据流进行了优化。这使得Esper成为在金融服务、网络监控、智能传感器分析、电信以及其他需要快速、实时数据分析的领域的一个理想选择。Esper的优点实时性:Esper能够在事件发生的同时进行处理和分析,支持低...

大数据星球-浪尖 1487

Esper——内存计算、事件驱动、SQL支持

教程简介Esper是一个事件流处理(ESP)和事件关联引擎(CEP的,复杂事件处理)。Esper的目标是针对实时事件驱动架构(EDA)。当Esper监测到事件流中又符合条件的时间发生时,即可触发PlainOldJavaObjects(POJO)编写的自定义操作。当数百万数量级的事件同时发生时,我们不可能使用普通的关系型数据库来存储和查询,Esper正是专为这样的大批量关联事件而设计的。E...

djph26741的博客 472

Flink系列(四)-- Esper,Siddhi,Drools Fusion简单介绍以及应用

原文地址(包含源码和图片):http://note.youdao.com/noteshare?id=c91f71fd16bedf7dfaac3b6fa663a243&sub=B79A8354FB1D4CB5BE44A1513C4F7A6C 一、简介 今天给大家分享的内容是FlinkCEP,中文意思就是复杂事件处理。 那么何为CEP呢? 听起来好像很复杂,实际上就是基于事件...

xcvbxv01的博客 6943

Esper剖析

Esper剖析 最近在看论文,发现文中有些语言自己未曾见过,经过一番搜索,才发觉是自己接触到了新知识。 官网:http://esper.codehaus.org/about/esper/esper.html Esper为一款开源的实时分析引擎。是一个强大的支持ESP(EventStreamProcess)和CEP(ComplexEventProc

IT全栈 华强工作室 5万+

esper简单入门

esper简单入门 一、CEP和ESP的概念 CEP,:Complex Event Process,复杂事件处理,是一种新兴的基于事件流的技术,它用于处理事件,从事件流中发现复杂的模式。它将系统数据看做不同类型的事件,通过分析事件间的关系,建立不同事件关系序列库,利用过滤、关联、聚合等技术,最终由简单事件产生高级事件或商业流程。 ESP,Event Stream Process...

flyandrun的专栏 633

探索Esper:实时事件处理与预测分析的新星

在大数据时代,快速、准确地处理和分析事件流变得越来越重要。Esper是一个强大的Java库,用于实时复杂事件处理(CEP),它能帮助开发者捕捉到数据流中的模式和异常,从而实现智能决策和预测性分析。 **项目链接**: <> ## 技术解析 Esper的核心在于其声明式事件处理模型,允许开发者定义一系列条件和规则,当事件序列满足这些条件时触发特定的操作。这种模式简化了事件处理的复杂性,使得非专

gitblog_00026的博客 521
上一篇: Vue学习日志1——vscode配置vue开发环境
下一篇: Ignite学习日志2——不同系统不同主机集群搭建
junior_programmer
博客等级 码龄11年 16粉丝 65原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值