3

我们目前正在测试 siddhi wso2 cep。

我们需要能够重新启动 wso2 服务器进程,而不会丢失已在窗口(例如时间窗口)中累积的数据。

有没有办法使时间窗口持久化,以便在不丢失状态的情况下重新启动服务器?

我们是否必须配置服务器以使用持久性?

还是我们只需要调整查询并使用事件表?

这是我们查询的示例:

from every data= DataInStream[state == 1] -> 
   every event = EventInStream[event.no == data.no] within 24h
       insert into duplicatesOutStream data.id as id
4

1 回答 1

4

您可以通过启用快照使 CEP 保持其状态。文档可以在这里找到。但请注意,这将“定期”(可在几分钟内配置)保持 CEP 的“整个状态”。由于这只是定期进行,因此您可能会丢失最后一次快照操作后到达的最新事件。如果您希望 cep 在崩溃后恢复,这是最简单的选择。

除此之外,没有其他方法可以使预定义的窗口持久化。但是,如果您愿意,您可以编写自己的自定义时间窗口(文档)来执行持久性并将其插入 CEP。

您也可以改用事件表。当您使用事件表时,您可以确保所有到达的事件都被持久化。(但这种方法的一个缺点是,与 Windows + 快照方法相比,这可能会影响性能)。

于 2013-12-04T07:39:43.320 回答