首页 文章

wso2:cep:siddhi:如何使时间窗持续存在

提问于
浏览
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

1 回答

  • 4

    您可以通过启用快照使CEP保持其状态 . 文档可以是found here . 但请注意,这将持续CEP "periodically"的"entire state"(可在几分钟内配置) . 由于这只是定期完成,因此您可能会丢失在上次快照操作后到达的最新几个事件 . 如果你想让cep在崩溃后恢复,这是最简单的选择 .

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

    您也可以使用事件表 . 使用事件表时,可以确保所有到达的事件都是持久的 . (但这种方法的一个缺点是,与Windows快照方法相比,这可能是性能损失) .

相关问题