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]