我正在使用 Esper(事件处理引擎),EPL 查询是:
select * from Event.ext:time_order(timestamp_event, 10000 minutes) where duration > 10
但输出不是按“timestamp_event”排序的:
id int = 1, timestamp_event= 1412686800000, duration = 30
id int = 4, timestamp_event= 1412685900000, duration = 70
id int = 2, timestamp_event= 1412688600000, duration = 45
id int = 3, timestamp_event= 1412689500000, duration = 60
id int = 5, timestamp_event= 1412636400000, duration = 15
为什么“time_order(timestamp_event, 10000 minutes)”指令不起作用?
我认为问题出在 Esper 配置上,让我们考虑一个简单的查询:
select * from Event.win:time(10 sec) order by id_event
这是 UpdateListener 的“upate”方法的代码:
public void update(EventBean[] newEvents, EventBean[] oldEvents) {
EventBean event = newEvents[0];
System.out.println("id int = " + event.get("id_event") + ", timestamp_event = " + ((Long)event.get("timestamp_event")).toString());
但是输出不是由“id_event”排序的!
id event = 1, timestamp_event = 1412686800000
id event = 4, timestamp_event = 1412687700000
id event = 2, timestamp_event = 1412687100000
id event = 3, timestamp_event = 1412687400000
id event = 5, timestamp_event = 1412688000000
似乎“order by”指令都不起作用,这怎么可能?