使用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陷阱。
答案 0 :(得分:0)
抱歉,我对你的用例感到困惑.. :))
您的用例是基于时间还是长度或两者兼而有..对于时间批处理窗口,它仅在第一个事件发生后才启动..
如果你想要等到50个事件(或任何事件没有到达),那么你必须使用lengthBatch窗口..如果你想要基于时间和批处理的过程,那么使用timeBatch窗口..
你有没有固定的活动?如果没有,CEP / Siddhi无法等待/批量无限期。应该有一些东西要说批次结束。不是吗?
答案 1 :(得分:0)
我遇到了同样的问题,它总是为发送到我的分组查询中的任意数量的记录创建两个汇总。我的问题的解决方案是,一个值与分组中使用的其他值不同。我建议你查一下分组。
如果您考虑合并两个记录,我建议您使用时间批处理窗口 timeBatch(1分钟),它将汇总您当前数据集的输出。