查询在Siddhi中完成处理时回调

时间:2015-12-03 09:09:32

标签: complex-event-processing siddhi

我正在使用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这样的东西。我认为这将是关闭SiddhiManagerExecutionPlanRuntime个实例的理想场所。

1 个答案:

答案 0 :(得分:1)

没有。没有这样的功能,将来也不能支持。其背后的基本原理是,实时流处理查询将处理传入流并发出输出流。没有“完成处理”的概念。只要有输入,查询就会处理事件。

由于您的要求是关闭SiddhiManager和ExecutionPlanRuntime,建议的方法是在程序的某些清理方法中执行此操作。或者你可以在回调中编写一些java代码来计算响应或等待时间和调用shutdown。希望这会有所帮助!!