在Esper CEP中更改运行时的EPL语句



目前我在Java环境中使用Esper 8来使用CEP。最近,我问自己是否可以在运行时更改EPL语句。例如,如果您有一个使用EPL语句运行的Esper CEP,并且您希望在不中断CEP运行时的情况下更改此EPL语句。因此,使用新的EPL语句或类似语句的SQL查询每x分钟更新一次EPL语句。这可能吗?还是每次更改EPL语句时都必须中断Java运行时,更改EPL声明并重新启动CEP?也许这个问题听起来很愚蠢,但我对埃斯珀CEP还不太了解。

提前感谢

Esper允许您更改语句集,但不能更改单个语句。换言之,您可以在运行中根据需要部署(创建EPL语句)和取消部署(删除EPL声明),但是现有的EPL语句是不可修改的。监听器、订阅者、变量、脚本、服务等以及扩展代码当然都可以更改。

它不允许您更改语句的原因是,一个语句可能而且经常具有某种状态。比如说select count(*) from Event;这算是一种状态。假设更改为select count(*), avg(price) from Event,现在选择计数和平均值,运行时实际上不会记住任何事件,因此无法追溯计算平均值。

澄清:对于"部署"one_answers"取消部署",我的意思不是部署和取消部署整个应用程序。我的意思是简单地创建一些新的EPL语句,并在没有任何应用程序停止/启动的情况下动态删除一些EPL语句。

最新更新