Apache storm 我可以随时更改Esper bolt声明吗?
我正在使用storm处理一些数据流 在开始的时候,我阅读了一个xml文件,在其中我找到了ESPERBolts中使用的语句。在我定义拓扑并在集群上运行它之后不久。 现在,如果我想更改bolt中的语句,我必须修改xml,停止集群,然后从头开始重新启动它 在集群运行时,是否有一个场景可以看到一个线程来检查我的xml,并在找到定义的新语句时使用新语句更新Esper Bolt 我对Esper螺栓的定义如下:Apache storm 我可以随时更改Esper bolt声明吗?,apache-storm,esper,topology,Apache Storm,Esper,Topology,我正在使用storm处理一些数据流 在开始的时候,我阅读了一个xml文件,在其中我找到了ESPERBolts中使用的语句。在我定义拓扑并在集群上运行它之后不久。 现在,如果我想更改bolt中的语句,我必须修改xml,停止集群,然后从头开始重新启动它 在集群运行时,是否有一个场景可以看到一个线程来检查我的xml,并在找到定义的新语句时使用新语句更新Esper Bolt 我对Esper螺栓的定义如下: String statement = "select count(*) as userPe
String statement = "select count(*) as userPerMinutes from event.win:time_batch(60 sec)";
EsperBolt esperBolt = new EsperBolt.Builder()
.inputs().aliasComponent("user")
.withField("field1").ofType(String.class)
.withField("field2").ofType(Integer.class)
.withField("field3").ofType(Long.class)
.toEventType("event")
.outputs().onDefaultStream().emit("userPerMinutes")
.statements().add(statement)
.build();
在线程中,如何访问此螺栓并编辑/添加/删除其语句?
通过拓扑?怎么做呢?我对Esper很熟悉,不认为动态添加或删除语句有任何问题。我不认为风暴会阻止你这么做。我有一个类似的系统。使用storm+esper运行分布式事件处理系统。Esper可以在运行时删除和添加epl。我的系统是如何做到这一点的,在bolt中启动一个新的线程,以便不时从数据库同步epl。更新已更改的(删除,然后添加) 希望这有帮助
添加代码可能很有用
EPStatement statement = esperAdmin.getStatement(rule.getName());
if (statement != null) {
statement.destroy();
}
怎么用?如何获取螺栓并编辑/添加/删除其语句?我必须最终按照它的定义构建它吗?我如何更新esper Bolt的语句?在externa线程中,如果我从DB获得一个关于该螺栓的新语句,我该怎么办?我要清理螺栓并重建它吗?还是怎样