Siddhi CEP 4.x:使用时间批处理窗口时每组有多个结果

时间:2016-07-13 09:41:04

标签: wso2 complex-event-processing siddhi

使用siddhi 4.1.0

是否有可能将time.windowBatch应用于即将举办的活动?我知道时间窗口是基于已经到达的事件而工作的。

比如说,

我在使用window.timeBatch(2分钟)和group by子句时获得了多个结果。

在给定的2分钟持续时间内,我定期通过50个输入事件。预期的行为是所有这些事件放在一起并作为单个结果给出(使用计数函数来验证)。但它给出了两个结果,如40和10.前40个事件是否属于一个时间窗口期,第二个是下一个窗口?在这种情况下,我将如何合并或获取所有这些事件是单个输出2分钟?

此外,我想在第一个事件到达后启动时间窗。

我经历过时间窗口在后台运行,如果事件进入第一时间窗口的中间,它只收集事件1分钟。下一个时间窗口收集剩余的一分钟事件。所以,最后我得到了2个批量结果。

请建议还有其他解决方案。

USECASE:

我的用例基于持续时间(time.windowBatch(1分钟))来监控交换机。我想实现以下用例。

用例: 交换机将SNMP陷阱发送给CEP。陷阱就像switchFanFailed和switchFanOk。

如果我收到switchFanFailed陷阱,我期待switchFanOk陷阱的下一个陷阱将在1分钟内。如果在1分钟内未收到switchFanOk陷阱,则CEP将通过电子邮件生成通知。否则它将丢弃该陷阱。

即使我的陷阱生成器在1分钟的持续时间内生成陷阱switchFanFailed和switchFanOk为常量,但在某些情况下,我无法在同一窗口中收到陷阱。

比如说,switchFanFailed即将结束0.50秒,从这里我应该等待1分钟才能期待switchFanOk陷阱。

2 个答案:

答案 0 :(得分:0)

抱歉,我对你的用例感到困惑.. :))

您的用例是基于时间还是长度或两者兼而有..对于时间批处理窗口,它仅在第一个事件发生后才启动..

如果你想要等到50个事件(或任何事件没有到达),那么你必须使用lengthBatch窗口..如果你想要基于时间和批处理的过程,那么使用timeBatch窗口..

你有没有固定的活动?如果没有,CEP / Siddhi无法等待/批量无限期。应该有一些东西要说批次结束。不是吗?

答案 1 :(得分:0)

我遇到了同样的问题,它总是为发送到我的分组查询中的任意数量的记录创建两个汇总。我的问题的解决方案是,一个值与分组中使用的其他值不同。我建议你查一下分组。

如果您考虑合并两个记录,我建议您使用时间批处理窗口 timeBatch(1分钟),它将汇总您当前数据集的输出。