你能动态地添加/删除KafkaSpouts到Apache Storm Topology吗?

时间:2016-08-11 08:28:04

标签: configuration apache-kafka apache-storm

我有一个Apache Storm拓扑,它接受来自多个Kafka主题的消息。

目前"多个"相当于" Two"。

由于我目前只有两个KafkaSpouts可供收听,因此我已将其硬编码到拓扑类中,编码如下: -

builder.setSpout(SPOUT_ONE_ID, kafkaSpout_A, 1);
builder.setSpout(SPOUT_TWO_ID, kafkaSpout_B, 1);
builder.setBolt(BOLT_ID, myBolt, 1).shuffleGrouping(SPOUT_ONE_ID).shuffleGrouping(SPOUT_TWO_ID);
然而,随着时间的推移KafkaSpouts的数量会增加,每个新的KafkaSpout都会听取自己独特的主题。每次出现新主题时,我都必须对拓扑进行代码更改并重新部署。

我更愿意通过外部配置"机制"来控制我的拓扑。像磁盘文件或数据库表。通过添加(或删除)Kafka主题细节,我希望我的拓扑开始(或停止)"倾听"那些主题。

Apache Storm是否支持这种动态配置?

1 个答案:

答案 0 :(得分:2)

Apache storm目前不支持动态更改拓扑配置。作为JStorm的一部分,有一个开放的JIRA项目可以支持。请参见链接:https://issues.apache.org/jira/browse/STORM-1335