我可以改变埃斯珀博尔特声明飞行?

eivgtgni  于 2021-06-21  发布在  Storm
关注(0)|答案(2)|浏览(381)

我正在用storm处理一些数据流。
开始时,我阅读了一个xml文件,在该文件中我找到了esperbolts中使用的语句。在我定义拓扑并在集群上运行它之后不久。现在,如果我想更改bolt中的语句,我必须修改xml,停止集群,然后从头开始重新启动它。
有没有一个场景可以看到一个线程来检查我的xml,并且当发现新的语句时,可以在集群进行时用新的语句更新esperbolt?
我定义了一个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();

在线程中,如何访问此螺栓并编辑/添加/删除其语句?通过拓扑?怎么做?

rmbxnbpk

rmbxnbpk1#

我有一个类似的系统。使用storm+esper运行分布式事件处理系统。esper可以在运行时删除和添加epl。我的系统是如何做到这一点的,在bolt中启动一个新线程,以便不时地从数据库同步epl。更新更改的(删除然后添加)。
希望这有帮助。
添加代码可能有用

EPStatement statement = esperAdmin.getStatement(rule.getName());
if (statement != null) {
    statement.destroy();
}
m528fe3b

m528fe3b2#

我对esper很熟悉,在运行中添加或删除语句没有任何问题。我不认为Storm会阻止你这么做。

相关问题