我计算一个定时窗口内的事件。如果有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
)。
问题:如何区分已删除事件和已发布事件?
答案 0 :(得分:0)
事件afaik上没有任何内容。我认为应用程序可以查看事件的时间,并查看其时间是否比当前时间早。我可以想到另一种选择,而on-delete的侦听器接收已删除的事件,而不接收过期的事件,这为应用程序提供了一种了解删除的内容和过期的方法。