Изменение оператора EPL во время выполнения в Esper CEP - PullRequest
0 голосов
/ 06 января 2019

В настоящее время я использую Esper 8 в среде Java для использования CEP. Недавно я спросил себя, возможно ли изменить операторы EPL во время выполнения. Например, если у вас есть Esper CEP, запущенный с оператором EPL, и вы хотите изменить этот оператор EPL, не прерывая время выполнения CEP. Таким образом, оператор EPL обновляется каждые x минут SQL-запросом с использованием новых операторов EPL или того же самого. Возможно ли это вообще, или мне нужно прервать выполнение Java, изменить оператор EPL и перезапускать CEP каждый раз, когда я меняю оператор EPL? Возможно, этот вопрос звучит глупо, но я пока мало что знаю об Esper CEP.

Заранее спасибо

1 Ответ

0 голосов
/ 06 января 2019

Esper позволяет вносить изменения в наборы утверждений, но не в отдельные утверждения. Другими словами, вы можете развернуть (создать операторы EPL) и отменить (удалить операторы EPL) столько, сколько вам нужно, на лету и во время работы, однако существующие операторы EPL не могут быть изменены. Слушатели, подписчики, переменные, сценарии, сервисы и т. Д., И конечно, могут быть изменены.

Причина, по которой вы не можете изменить утверждение, состоит в том, что утверждение может и часто имеет какое-то состояние. Как сказать select count(*) from Event; Это считается государством. Предполагая, что это должно было измениться на select count(*), avg(price) from Event, теперь выбирая счетчик и среднее значение, среда выполнения на самом деле не запоминает никаких событий, поэтому среднее значение не может быть рассчитано ретроспективно.

РАЗЪЯСНЕНИЕ: С "deploy" и "undeploy" я НЕ имею в виду развертывать и отменять развертывание всего приложения. Я имею в виду просто создать несколько новых операторов EPL и удалить некоторые операторы EPL на лету без остановки / запуска приложения.

...