wso2 cep externalTime问题

时间:2016-11-15 11:08:19

标签: wso2 complex-event-processing wso2cep siddhi

根据用户指南,我认为externalTime窗口(时间戳,时间值)应该仅将事件保持在范围内:从时间戳到时间戳+时间值。

例如,在执行计划

ffmpeg

我认为时间范围限制在2016-11-14 19:45:00至2016-11-14 19:55:00。

但事实上,19:55之后的事件也会在出版商中被解雇。

这是一个错误吗?

如果不是,我怎样才能从确切的时间开出一个窗口?

1 个答案:

答案 0 :(得分:0)

这不是一个错误。我认为你误解了externalTime窗口的用法。 ExternalTime窗口固定时间窗口,它是一个类似于时间窗口的滑动时间窗口。但是,时间窗口和externalTime窗口之间的区别在于它使用在流定义中定义的时间戳属性(外部时间戳),而不是使用实际事件接收时间(事件到达窗口时的系统时间)到决定该特定事件的窗口。并且它在您想要重放事件流的情况下变得有用,或者如果实际事件生成时间与其接收时间(由于高网络延迟)等不同,则会变得非常有用。

AFAIU,如果您只对在2016-11-14 19:45:002016-11-14 19:55:00(固定时间范围)之间到达的事件感兴趣,您可以简单地使用过滤器。参考下面的示例;否则,您可能必须为此目的编写自己的扩展名(guide on writing custom extensions)。

from input
select time:timestampInMilliseconds() tm
insert into tmpStream;

-- 5 * 60 * 1000 Milliseconds = 5 min
from tmpStream[tm - time:timestampInMilliseconds('2016-11-14 19:45:00.000') >= 5 * 60 * 1000] 
select *
insert into withInTimeStream;