как получить старый ивент в esper?

Я делаю программу на основе окна длины в Esper. Но когда окно заполнено, предыдущее событие должно стать старым событием. Когда я пытаюсь напечатать это старое событие в updateListener, я каждый раз получаю нулевое значение.

EPServiceProvider sp = EPServiceProviderManager.getDefaultProvider();
    String qry = "select count(*) from com.bizruntime.Student.win:length(2)";

    EPStatement statement = sp.getEPAdministrator().createEPL(qry);

    MyListener listener = new MyListener();
    statement.addListener(listener);

    Student student1 = new Student(44,"xyz");
    Student student2= new Student(45,"pqr");
    Student student3 = new Student(43,"stu");
    Student student4 = new Student(41,"abc");
    sp.getEPRuntime().sendEvent(student1);
    sp.getEPRuntime().sendEvent(student2);
    sp.getEPRuntime().sendEvent(student3);
    sp.getEPRuntime().sendEvent(student4);

это класс слушателя:

    public void update(EventBean[] newEvent, EventBean[] oldEvent) {
    EventBean event = newEvent[0];

    System.out.println(oldEvent);
    System.out.println("Student Name :"+event.get("count(*)"));

     }

person Santanu    schedule 03.03.2016    source источник


Ответы (1)


Существует «выбрать rstream», который дает вам «удалить поток», соответствующий тому, что находится в вашем предложении select. Если предложение select — это просто счетчик, то поток удаления — это предыдущий счетчик. В случае, когда вам также нужен какой-либо вывод событий, вы можете просмотреть функции агрегации событий, такие как «последнее» или «окно», или функции «предыдущее» и «предыдущее».

person user3613754    schedule 03.03.2016