Обратный вызов после завершения обработки запроса в Siddhi

Я пишу небольшую программу CEP, используя Siddhi. Я могу добавить обратный вызов всякий раз, когда заданный фильтр выводит такие данные

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.


person shshnk    schedule 03.12.2015    source источник


Ответы (1)


Нет. Такой функциональности нет и не может поддерживаться в будущем. Обоснование этого заключается в том, что запросы обработки потока в реальном времени будут обрабатывать входящий поток и выдавать выходной поток. Понятия «завершенная обработка» не существует. Запрос скорее будет обрабатывать событие, пока есть ввод.

Поскольку вам нужно отключить SiddhiManager и ExecutionPlanRuntime, рекомендуется сделать это внутри некоторого метода очистки вашей программы. Или же вы можете написать некоторый java-код внутри обратного вызова для подсчета ответов или времени ожидания и завершения вызова. Надеюсь это поможет!!

person Tishan    schedule 04.12.2015
comment
Спасибо за ваше объяснение. Я реализовал нечто подобное. Когда я закончу вводить запрос, я жду 5 секунд, прежде чем вызвать отключение. Я знаю очень грубый подход, но это то, что я делаю сейчас. - person shshnk; 04.12.2015