我正在用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();
在线程中,如何访问此螺栓并编辑/添加/删除其语句?通过拓扑?怎么做?
2条答案
按热度按时间rmbxnbpk1#
我有一个类似的系统。使用storm+esper运行分布式事件处理系统。esper可以在运行时删除和添加epl。我的系统是如何做到这一点的,在bolt中启动一个新线程,以便不时地从数据库同步epl。更新更改的(删除然后添加)。
希望这有帮助。
添加代码可能有用
m528fe3b2#
我对esper很熟悉,在运行中添加或删除语句没有任何问题。我不认为Storm会阻止你这么做。