2015-12-03 6 views
0

Я пишу небольшую программу 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 экземпляров.

ответ

1

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

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

+0

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

Смежные вопросы