Apache storm 我可以随时更改Esper bolt声明吗?

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

我正在使用storm处理一些数据流

在开始的时候,我阅读了一个xml文件,在其中我找到了ESPERBolts中使用的语句。在我定义拓扑并在集群上运行它之后不久。 现在,如果我想更改bolt中的语句,我必须修改xml,停止集群,然后从头开始重新启动它

在集群运行时,是否有一个场景可以看到一个线程来检查我的xml,并在找到定义的新语句时使用新语句更新Esper Bolt

我对Esper螺栓的定义如下:

    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获得一个关于该螺栓的新语句,我该怎么办?我要清理螺栓并重建它吗?还是怎样