zoukankan      html  css  js  c++  java
  • esper(2)-事件类型

    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]
  • 相关阅读:
    python 列表、元组、字典总结
    python 字典
    python 元组
    python 列表
    JMeter的作用域与执行顺序
    JMeter第一个实战
    JMeter录制的两种方法
    JMeter常用功能
    初识jmeter2
    handler的拒绝策略:
  • 原文地址:https://www.cnblogs.com/yaoyuan2/p/10578648.html
Copyright © 2011-2022 走看看