目前,我在Java环境中使用Esper8来使用CEP。最近,我问自己是否有可能在运行时更改EPL语句。例如,如果您有一个使用EPL语句运行的Esper CEP,并且您希望在不中断CEP运行时的情况下更改此EPL语句。因此,使用新的EPL语句或相同语句的SQL查询每隔x分钟更新一次EPL语句。这是可能的吗?或者每次更改EPL语句时,我都必须中断Java运行时,更改EPL语句并重新启动CEP吗?也许这个问题听起来很愚蠢,但我对Esper CEP还知之甚少。
提前感谢
发布于 2019-01-06 22:54:03
Esper允许您对语句集进行更改,但不能对单个语句进行更改。换句话说,您可以在运行时根据需要部署(创建EPL语句)和取消部署(删除EPL语句),但是现有的EPL语句是不可修改的。侦听器、订阅者、变量、脚本、服务等和扩展代码当然可以更改。
它不允许您更改语句的原因是,一条语句可能并且通常确实具有某种状态。比如select count(*) from Event;这可以算作一个状态。假设更改为select count(*), avg(price) from Event,现在选择计数和平均值,运行时实际上不会记住任何事件,因此无法回溯计算平均值。
澄清:使用“部署”和“取消部署”并不意味着部署和取消部署整个应用程序。我的意思只是创建一些新的EPL语句,并在没有任何应用程序停止/启动的情况下动态删除一些EPL语句。
https://stackoverflow.com/questions/54062158
复制相似问题