Java Esper-如果数据窗口中不存在基本事件,则捕获增量事件
假设我有一个命名窗口:Java Esper-如果数据窗口中不存在基本事件,则捕获增量事件,java,esper,complex-event-processing,Java,Esper,Complex Event Processing,假设我有一个命名窗口: CREATE WINDOW TestWindow.std:unique(FieldA) AS SELECT * FROM TestEvent; 其中TestEvent是一个修订事件,TestEventBase和TestEventDelta分别在TestEvent的基本事件和增量事件中定义。这里的关键是菲尔达 当前,如果窗口中存在没有基本事件的增量事件,则Esper会自动放弃此增量事件。因此,例如,如果一个增量事件出现在一个基本事件之前,那么窗口中的行的状态将看起来只是基
CREATE WINDOW TestWindow.std:unique(FieldA) AS SELECT * FROM TestEvent;
其中TestEvent是一个修订事件,TestEventBase和TestEventDelta分别在TestEvent的基本事件和增量事件中定义。这里的关键是菲尔达
当前,如果窗口中存在没有基本事件的增量事件,则Esper会自动放弃此增量事件。因此,例如,如果一个增量事件出现在一个基本事件之前,那么窗口中的行的状态将看起来只是基本事件,因为增量被丢弃
我的问题是,如果delta事件无法进入窗口,有没有一种方法可以捕获它,例如,在发生这种情况时进行特殊处理
如果我的应用程序要求我不丢失消息,而Esper正在悄悄地丢弃一些而不是其他消息,那么我如何能够100%确定事件进入了窗口
提前感谢您的帮助 您可以使用单独的语句来检测没有基本事件的增量事件,即。 从TestDelta中选择*作为不存在的td从TestEvent中选择*首先:唯一id,其中te.id=td.id
增量事件设计用于基本事件总是首先到达并且增量覆盖基本事件的用例。如果不是这种情况,可以使用命名窗口和on merge,或者类似于上面的子查询进行合并。您可以使用单独的语句来检测没有基本事件的增量事件,即。 从TestDelta中选择*作为不存在的td从TestEvent中选择*首先:唯一id,其中te.id=td.id
增量事件设计用于基本事件总是首先到达并且增量覆盖基本事件的用例。如果不是这样,可以使用命名窗口和合并,或者类似于上面的子查询进行合并。此解决方案要求Esper在此窗口中存储事件以进行比较,是吗?如果有数百万条消息通过,这可能会占用大量资源。此解决方案要求Esper在此窗口中存储一个事件以进行比较,是吗?如果有数以百万计的消息通过,这可能是相当多的资源。