1、esper的处理模型是持续性的——根据statement中事件流(event stream)、视图(views)、过滤器(filters)等的选择,esper引擎一旦处理事件数据,就会变更statement中监听或subscriber接收到事件信息。
2、insert Stream — 表示新事件进入到引擎,并进入到事件窗口等。
先看个例子 :
select * from Withdrawal
这个例子的IStream 其实就是进入引擎的withdrawal事件流,并作为新事件被推送给listener。如下图所示:
说明:按照上面的EPL语句:select * from withdrawal; 每当有一个withdrawal事件进入时,如W1、W2等,一旦进入到引擎,就会当成新事件(New Events)立刻推送给updatelistener。
3、IRStream — Insert and Remove Stream
当使用IRStream时,EPL中就会有事件窗口——长度窗口(length window)或者 时间窗口(time window)的使用。比如下面的EPL语句:
select * from Withdrawal.win:length(5)
这个EPL语句使用了长度窗口(length window)— win:length(N)。表示引擎会将过去的n条事件保存在事件流中。如下图所示