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]

 

转载于:https://www.cnblogs.com/yaoyuan2/p/10578648.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值