当前,我在Java环境中使用Esper 8来使用CEP。最近,我问自己是否可以在运行时更改EPL语句。例如,如果您有一个运行有EPL语句的Esper CEP,并且想要更改此EPL语句而不中断CEP运行时。因此,使用新的EPL语句或相同的SQL查询,每隔x分钟更新一次EPL语句。这是否有可能,还是每次我更改EPL语句时都必须中断Java运行时,更改EPL语句并重新启动CEP? 也许这个问题听起来很愚蠢,但我对Esper CEP知之甚少。
预先感谢
答案 0 :(得分:0)
Esper允许您更改语句集,但不能更改单个语句。换句话说,您可以在运行中和运行时随意部署(创建EPL语句)和取消部署(删除EPL语句),但是现有的EPL语句不可修改。侦听器,订户,变量,脚本,服务等以及扩展代码当然可以更改。
不允许您更改语句的原因是,一条语句可能并且经常确实具有某种状态。像说select count(*) from Event
;这已被视为状态。假设将其更改为select count(*), avg(price) from Event
,现在选择计数和平均值,则运行时实际上不会记住任何事件,因此无法追溯计算平均值。
说明:“部署”和“取消部署”并不是要部署和取消部署整个应用程序。我的意思是简单地创建一些新的EPL语句并即时删除一些EPL语句,而无需任何应用程序停止/启动。