Esper EPL-在定时窗口中将已删除事件与已发布事件区分开

时间:2018-12-07 17:56:29

标签: esper

我计算一个定时窗口内的事件。如果有5个以上的事件到达该窗口,那么我想将其全部丢弃。否则,事件将在等待时间之后释放。

我的代码是这样的:

// Create a timed window of 10 seconds
create window MyWindow.win:time(10 sec) as MyEventType;

// Add to the timed window
insert into MyWindow select * from MyEventType;

//Delete from window if upper limit was reached
On MyEventType as newEvent 
   select and delete * from MyWindow as oldEvent
   having COUNT(*) >= 5;

此外,侦听器还会接收所有离开定时窗口的事件:

select rstream * from MyWindow;

上述示例的问题在于,已删除的释放事件都被转发到侦听器(通过rstream)。

问题:如何区分已删除事件和已发布事件?

1 个答案:

答案 0 :(得分:0)

事件afaik上没有任何内容。我认为应用程序可以查看事件的时间,并查看其时间是否比当前时间早。我可以想到另一种选择,而on-delete的侦听器接收已删除的事件,而不接收过期的事件,这为应用程序提供了一种了解删除的内容和过期的方法。