我正在寻找 CEP 引擎,但我不知道是否有任何引擎符合我的要求。我的系统必须处理多个事件数据流并生成复杂的事件,而这正是几乎所有 CEP 引擎(ESPER、Drools)都非常适合的。
我将所有原始事件存储在数据库中(它不是 CEP 部分,但我这样做)并使用规则(或连续查询或其他东西)来生成对复杂事件的自定义操作。但我的一些规则取决于过去的事件。例如:每当我的配偶回家或离开家时,我可以有一个传感器发送事件,如果我的车和我喜欢的女人的车都在房子附近,我会收到短信“危险”。
问题是,随着事件处理服务的重新启动,我丢失了有关系统状态的所有信息(我的妻子在家吗?)并且要恢复它,我需要在未知的时间段内重播事件。系统状态不仅可以依赖于原始事件,还可以依赖于复杂事件。
当我需要一些关于过去复杂事件的报告时,也会出现同样的问题。我将原始事件数据存储在数据库中,并且可以生成这些复杂事件来重播原始事件,但我不知道我必须在哪个时期重播它们。
同时很明显,对于大多数规则,可以自动找到过去要处理的事件数(或加载要处理的事件的时间段)以恢复系统状态。如果给定的行动取决于我妻子在家的存在,CEP 系统必须请求最后一次状态更改。如果请求报告复杂事件且复杂事件取决于上一期间的平均价格,则应重播该期间的所有价格变化事件。等等...
如果我错过了什么?