Esper中作简单查询的时间窗口虽然有批次和连续滑动的概念,但是在做模式(pattern)相关应用时却是带有批次窗口含义。SASE+理论已经对时间窗口进行了严格定义。在SASE+中的时间窗口W的含义是复杂事件的结束时间S1减去开始时间S2要不大于时间窗口W,即|S1-S2|<=W。所以在使用Esper处理时,没有深入的二次开发很容易出现事件漏报的情况
例如在下面代码中
package com.cn;
import com.espertech.esper.client.EPAdministrator;
import com.espertech.esper.client.EPRuntime;
import com.espertech.esper.client.EPServiceProvider;
import com.espertech.esper.client.EPServiceProviderManager;
import com.espertech.esper.client.EPStatement;
import com.espertech.esper.client.EventBean;
import com.espertech.esper.client.UpdateListener;
class Experiment1Apple
{
private int id;
private int price;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public int getPrice()
{
return price;
}
public void setPrice(int price)
{
this.price = price;
}
}
//创建监听语句
class Experiment1AppleListener implements UpdateListener
{
public void update(EventBean[] newEvents, EventBean[] oldEvents)
{
System.out.println("newEvents length: "+newEvents.length+"");
if (newEvents != null)
{
Double avg = (Double) newEvents[0].get("avg(price)");
System.out.println("Apple's average price is " + avg);
}
}
}