1

假设我有一个命名窗口:

CREATE WINDOW TestWindow.std:unique(FieldA) AS SELECT * FROM TestEvent;

其中TestEvent是 RevisionEvent,TestEventBaseTestEventDelta分别在 的基础和增量事件中定义TestEvent。这里的关键是FieldA

目前,如果窗口中存在没有基本事件的增量事件,Esper 似乎会默默地丢弃此增量事件。因此,例如,如果 delta 事件出现在基本事件之前,则窗口中行的状态将看起来只是基本事件,因为 delta 被丢弃。

我的问题是,如果增量事件未能进入窗口,是否有办法捕捉它,例如,在发生这种情况时进行特殊处理?

如果我的应用程序要求我不丢失消息,并且 Esper 默默地丢弃了一些消息而不是其他消息,那么我如何 100% 确定某个事件进入了窗口?

提前感谢您的任何帮助!

4

1 回答 1

1

您可以使用单独的语句来检测没有基本事件的增量事件,即“select * from TestDelta as td where not exists (select * from TestEvent.first:unique(id) where te.id = td.id)”

增量事件设计用于基本事件总是先到达并且增量覆盖基本事件的用例。如果不是这种情况,则可能使用命名窗口并合并,或者类似于上面的子查询进行合并。

于 2012-10-12T15:39:18.533 回答