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. [tensorflow]异或门的实现

    一段小程序:待理解 import tensorflow as tf import numpy as np #输入训练数据,这里是python的list, 也可以定义为numpy的ndarray x_d ...

  2. hive与hbase数据类型对应关系

    hive与hbase数据类型对应关系 当hbase中double,int 类型以byte方式存储时,用字符串取出来必然是乱码. 在hivd与hbase整合时也遇到这个问题:做法是:#b 1.加#b C ...

  3. 利用HTML5 与CSS3 做的放大镜

    利用HTML5 与CSS3 做的放大镜 html结构 <div class="wrap"> <div class="move"> < ...

  4. Excel课程学习

    1.Excel软件简介 1.1历史上的其他数据处理软件与Microsoft Excel 1977年,苹果公司开发了一款数据处理软件,当时这款软件卖的非常好,用软件的尾巴摇动硬件的狗,当时有人因为这款软 ...

  5. iTween插件使用

    itween插件 itween是一个动画库,作者创建它的目的就是最小的投入实现最大的产出.用它可以轻松实现各种动画,晃动,旋转,移动.褪色.上色.控制音频等. iTween原理: itween的核心是 ...

  6. .net core 部署在Linux系统上运行的环境搭建总结

    安装Linux用的是腾讯云的centos7.5,需要安装有环境有mysql5.7  .netcore2.1 nginx1.14 1.首先是mysql的安装 我用的链接工具是putty,首先root登入 ...

  7. Centos7环境下FastRunner前端(FasterWeb)部署

    FastRunner前端安装 1.安装和创建Python虚拟环境 安装virtualenvwrapper 2.拉取代码 cd ~ # 环境当前用户home目录 git clone git@github ...

  8. Nginx+ISS+Redis实现完美负载均衡

    前篇文章讲到nginx是使网站采用分布式,对用户的请求采用分布式,分配到不同的服务器上,然后进行同一站点的访问,保证了访问的高效,使用率高,生命期长. 说到ISS,这里重点介绍tomcat,Tomca ...

  9. 解读人:董鑫,Disease Development Is Accompanied by Changes in Bacterial Protein Abundance and Functions in a Refined Model of Dextran Sulfate Sodium (DSS)-Induced Colitis

    文章中文名:在葡聚糖硫酸钠(DSS)诱导下的结肠炎模型伴随着细菌蛋白质丰度和功能的改变 单位: 1 Helmholtz-Centre for Environmental Research - UFZ, ...

  10. plsql查询结果中文乱码

    网上的教程很多,但是这里需要说明的是如果没有安装oracle客户端的情况下,该怎么修改注册表里面的oracle参数呢? 当然有些是不需要改注册表的,只需要配置环境变量就可以了,但是有的时候发现改了之后 ...