Esper 终止分区上下文
Esper terminating partitioned context
我有一口气ThingEvent
。
create schema ThingEvent {
thingID int,
isLast boolean
}
我想一起处理具有相同 thingID
的事物,所以我创建了一个上下文。
create context ThingContext
partition by thingID from ThingEvent
但是,当我得到 isLast
设置为 true
的东西时,这意味着我们再也不会看到 ThingEvent
具有相同 thingID
的东西.但是上下文将永远挂起,导致资源泄漏。
我发现一个overlapping context可以终止
create context ThingContext
initiated by distinct(thingID) ThingEvent(isLast <> true) as startEvent
terminated by ThingEvent(thingID = startEvent.thingID, isLast = true);
但是我在使用的时候需要手动过滤事件
context ThingContext
select *
from ThingEvent(thingID=context.startEvent.thingID)
output when terminated;
当我开始使用模式时,这变得太冗长了。有没有办法两全其美?
我认为键控上下文没有终止条款。
有一种终止任何上下文分区的编程方式,link to documentation。
有一个预定义的表达式别名 "expression alias {}"。
而不是重复表达式
编辑:
此功能是在 7.0.0 版本中添加的 http://www.espertech.com/esper/esper-changehistory/
我有一口气ThingEvent
。
create schema ThingEvent {
thingID int,
isLast boolean
}
我想一起处理具有相同 thingID
的事物,所以我创建了一个上下文。
create context ThingContext
partition by thingID from ThingEvent
但是,当我得到 isLast
设置为 true
的东西时,这意味着我们再也不会看到 ThingEvent
具有相同 thingID
的东西.但是上下文将永远挂起,导致资源泄漏。
我发现一个overlapping context可以终止
create context ThingContext
initiated by distinct(thingID) ThingEvent(isLast <> true) as startEvent
terminated by ThingEvent(thingID = startEvent.thingID, isLast = true);
但是我在使用的时候需要手动过滤事件
context ThingContext
select *
from ThingEvent(thingID=context.startEvent.thingID)
output when terminated;
当我开始使用模式时,这变得太冗长了。有没有办法两全其美?
我认为键控上下文没有终止条款。
有一种终止任何上下文分区的编程方式,link to documentation。
有一个预定义的表达式别名 "expression alias {}"。
而不是重复表达式编辑:
此功能是在 7.0.0 版本中添加的 http://www.espertech.com/esper/esper-changehistory/