我正在使用Siddhi编写一个小型CEP程序。每当给定的过滤器输出像这样的数据
时,我都可以添加回调executionPlanRuntime.addCallback("query1", new QueryCallback() {
@Override
public void receive(long timeStamp, Event[] inEvents, Event[] removeEvents) {
EventPrinter.print(inEvents);
System.out.println("data received after processing");
}
});
但是有一种方法可以知道过滤器已经完成处理,并且它不会再提供上述回调。像didFinish
这样的东西。我认为这将是关闭SiddhiManager
和ExecutionPlanRuntime
个实例的理想场所。
答案 0 :(得分:1)
没有。没有这样的功能,将来也不能支持。其背后的基本原理是,实时流处理查询将处理传入流并发出输出流。没有“完成处理”的概念。只要有输入,查询就会处理事件。
由于您的要求是关闭SiddhiManager和ExecutionPlanRuntime,建议的方法是在程序的某些清理方法中执行此操作。或者你可以在回调中编写一些java代码来计算响应或等待时间和调用shutdown。希望这会有所帮助!!