2016-03-03 95 views
0

我在Esper中做了一个基于长度窗口的程序。但是当窗口已满时,以前的事件应该成为一个旧事件。当我试图在updateListener中打印那个旧事件时,我每次都变空。如何在esper中获得旧事件?

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(*)")); 

    } 

回答

0

有一个“选择rstream”它给你的“删除流”相匹配的是在你的SELECT子句。如果select子句只是一个计数,那么删除流是以前的计数。在您还需要某些事件输出的情况下,您可以查看“last”或“window”或“prev”和“prior”函数的事件聚合函数。

+0

感谢您的帮助。 – Santanu