1、pojo

package com.ebc.eventtype.pojo.pojo1;

import cn.hutool.core.collection.CollUtil;
import com.espertech.esper.client.*;
import lombok.*; import java.util.List;
import java.util.Map; /**
*
* @author yaoyuan2
* @date 2019/3/21
*/
public class PojoTest {
static EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider();
static EPAdministrator admin = epService.getEPAdministrator(); public static void main(String[] args) {
String epl = "select age,children,address from com.ebc.eventtype.pojo.pojo1.Person where name=\"yaoyuan\"";
EPStatement state = admin.createEPL(epl);
state.addListener(new UpdateListener() {
@Override
public void update(EventBean[] newEvents, EventBean[] oldEvents) {
if (newEvents != null) {
Address address = (Address)newEvents[0].get("address");
List<Child> children = (List<Child>)newEvents[0].get("children");
Integer age = (Integer)newEvents[0].get("age"); System.out.println("address =" + address.getRoad());
System.out.println("children =" + children);
System.out.println("age =" + age);
}
}
});
EPRuntime runtime = epService.getEPRuntime(); Person p1 = new Person();
p1.setName("yaoyuan");
p1.setAge(20);
p1.setChildren(CollUtil.newArrayList(new Child("c1", 1), new Child("c2", 2)));
p1.setAddress(new Address("解放道", "食品大街", 30));
runtime.sendEvent(p1); Person p2 = new Person();
p2.setName("yaoyuan2");
p2.setAge(21);
p2.setChildren(CollUtil.newArrayList(new Child("c1", 1), new Child("c2", 2)));
p2.setAddress(new Address("燕顺路", "开发区大街", 31));
runtime.sendEvent(p2);
}
}
@Setter
@Getter
@ToString
class Person {
String name;
int age;
List<Child> children;
Map<String,Integer> phones;
Address address;
} @Setter
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
class Child {
String name;
int gender; } @Setter
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
class Address {
String road;
String street;
int houseNo;
}

输出

address =解放道
children =[Child(name=c1, gender=1), Child(name=c2, gender=2)]
age =20

2、Map

package com.ebc.eventtype.map;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Console;
import com.espertech.esper.client.*; import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* @author yaoyuan2
* @date 2019/3/22
*/
public class MapTest {
public static void main(String[] args) {
EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider();
EPAdministrator admin = epService.getEPAdministrator();
// Person定义
Map<String,Object> person = new HashMap<String,Object>();
person.put("name", String.class);
person.put("age", int.class);
person.put("children", List.class);
person.put("phones", Map.class);
// 注册Person到Esper
admin.getConfiguration().addEventType("MyPersonMap", person); String epl = "select name,children from MyPersonMap where name=\"yaoyuan2\"";
EPStatement state = admin.createEPL(epl);
state.addListener(new UpdateListener() {
@Override
public void update(EventBean[] newEvents, EventBean[] oldEvents) {
if (newEvents != null) {
Console.log("name={},children={}",newEvents[0].get("name"),newEvents[0].get("children"));
}
}
});
EPRuntime runtime = epService.getEPRuntime();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("name", "yaoyuan2");
map1.put("children", CollUtil.newArrayList("大毛","二毛"));
runtime.sendEvent(map1, "MyPersonMap"); }
}

输出

name=yaoyuan2,children=[大毛, 二毛]

3、ObjectArray

package com.ebc.eventtype.array;

import com.espertech.esper.client.EPAdministrator;
import com.espertech.esper.client.EPServiceProvider;
import com.espertech.esper.client.EPServiceProviderManager;
import com.espertech.esper.client.EventType; import java.util.Arrays;
import java.util.Map; /**
* @author yaoyuan2
* @date 2019/3/22
*/
public class ObjectArrayTest {
public static void main(String[] args) {
EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider();
EPAdministrator admin = epService.getEPAdministrator(); // Address定义
String[] addressPropNames = { "road", "street", "houseNo" };
Object[] addressPropTypes = { String.class, String.class, int.class }; // Child定义
String[] childPropNames = { "name", "age" };
Object[] childPropTypes = { String.class, int.class }; // Person定义
String[] personPropNames = { "name", "age", "children", "phones", "address" };
Object[] personPropTypes = { String.class, int.class, "Child[]", Map.class, "Address" }; // 注册Address到Esper
admin.getConfiguration().addEventType("Address", addressPropNames, addressPropTypes);
// 注册Child到Esper
admin.getConfiguration().addEventType("Child", childPropNames, childPropTypes);
// 注册Person到Esper
admin.getConfiguration().addEventType("Person", personPropNames, personPropTypes); // 新增一个gender属性
admin.getConfiguration().updateObjectArrayEventType("Person", new String[] { "gender" }, new Object[] { int.class }); /** 输出结果:
* Person props: [name, age, children, phones, address, gender]
*/
EventType event = admin.getConfiguration().getEventType("Person");
System.out.println("Person props: " + Arrays.asList(event.getPropertyNames()));
}
}

输出

Person props: [name, age, children, phones, address, gender]

esper(2)-事件类型的更多相关文章

  1. Esper学习之二:事件类型

    Esper对事件有特殊的数据结构约定.能处理的事件结构有:POJO,java.util.Map,Object Array,XML 1.POJO 对于POJO,Esper要求对每一个私有属性要有gett ...

  2. NEsper使用的事件类型 z

    NEsper使用的事件类型来描述事件的类型信息.你的应用在启动时可能预先配置定义事件类型,或者在运行时通过API或EPL语法动态的增加事件类型. EPL中的create schema 的语法允许在运行 ...

  3. MySQL binlog中的事件类型

    MySQL binlog记录的所有操作实际上都有对应的事件类型的,譬如STATEMENT格式中的DML操作对应的是QUERY_EVENT类型,ROW格式下的DML操作对应的是ROWS_EVENT类型. ...

  4. 深入理解DOM事件类型系列第二篇——键盘事件

    × 目录 [1]类型 [2]顺序 [3]按键信息[4]应用 前面的话 鼠标和键盘是电脑端主要的输入设备,上篇介绍了鼠标事件,本文将详细介绍键盘事件 类型 键盘事件用来描述键盘行为,主要有keydown ...

  5. DOM事件类型详解

    一.表单事件: input事件当<input>.<textarea>的值发生变化时触发.此外,打开contenteditable属性的元素,只要值发生变化,也会触发input事 ...

  6. JS中的事件类型和事件属性的基础知识

    周末无聊, 这几天又复习了下JS搞基程序设计3, 想着好记性不如浪笔头哇, 要么把这些东西写下来, 这样基础才能更加扎实么么哒, 知道的同学也可以直接过一下,当做复习,  小姨子再也不用担心我的学习啦 ...

  7. JavaScript事件类型

    JavaScript事件类型 Web浏览器中可能发生的事件有很多类型.这里我将主要将下面几种常用的事件类型: UI事件 焦点事件 鼠标与滚轮事件 键盘与文本事件 复合事件 变动事件 HTML5事件 设 ...

  8. javascript事件类型之界面拖拽交互

    一.在线DEMO 界面拖拽交互

  9. 在 SharePoint Server 2013 中配置建议和使用率事件类型

    http://technet.microsoft.com/zh-cn/library/jj715889.aspx 适用于: SharePoint Server 2013 利用使用事件,您可以跟踪用户与 ...

  10. DOM(六)事件类型

    对于用户事件类型而言,最常用的是鼠标.键盘.浏览器. 1.鼠标事件: 鼠标的事件都频繁使用,下面例子就测试各种鼠标事件 <script language="javascript&quo ...

随机推荐

  1. [poj1410]Intersection

    题目大意:求线段与实心矩形是否相交. 解题关键:转化为线段与线段相交的判断. #include<cstdio> #include<cstring> #include<al ...

  2. vue安装vuex框架

    1.安装vuex npm install vuex --save-dev 2.创建storesrc下创建stores文件夹,创建noteStore.js import Vue from 'vue'; ...

  3. echarts柱状图每个柱子显示不同颜色,并且能够实现点击每种颜色影藏对应柱子的功能

    ---------------------------------------------------------代码区---------------------------------------- ...

  4. 【摘自张宴的"实战:Nginx"】nginx配置

    user nobody;worker_processes 2; #error_log logs/error.log;error_log logs/error.log notice;#error_log ...

  5. c#与Java事件定义的不同

    C#: using System; using System.Collections.Generic; using System.Text; namespace Test1 { class Progr ...

  6. 数字图像处理实验(6):PROJECT 04-02,Fourier Spectrum and Average Value 标签: 图像处理MATLABfft 2017-05-07 23:1

    实验要求: Objective: To observe the Fourier spectrum by FFT and the average value of an image. Main requ ...

  7. R: 关于 ggplot2 的初探

    生活还很长,别急,慢慢来.亲爱的 require(ggplot2)p1 <- ggplot(mpg, aes(displ, hwy)) + geom_point() ; p1p1 + scale ...

  8. 第二周个人作业:WordCount

    github地址 https://github.com/lzwk/WordCount PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 20 40 · ...

  9. Visual Studio 2017中如何创建安装打包项目

    从Visual Studio 2012开始,微软就不在环境中自动集成安装打包项目了,如果还想使用,需要手动下载安装,这里以在Visual Studio 2017上安装打包项目为例进行介绍,步骤如下: ...

  10. server12装.NET 3.5

    参考:https://support.microsoft.com/en-us/help/2734782/net-framework-3-5-installation-error-0x800f0906- ...