如何合并Storm组件特定的配置数据?

时间:2014-06-08 15:53:11

标签: apache-storm

我有一个包含喷口/螺栓的Storm拓扑。 有一些特定于特定喷口的配置数据 我还想使用一个特定的螺栓(即从配置文件中读取) 所以它不是硬编码的。配置数据的示例是文件名 spout是读取和一个bolt要写入的文件名。 我认为配置数据传递给open和prepare方法。

如何合并配置文件中的组件特定数据?

1 个答案:

答案 0 :(得分:0)

至少有两种方法可以做到这一点:

1)在Storm配置中包含特定于应用程序的配置,该配置将在IBolt.prepare()ISpout.open()方法调用期间使用。您可以使用的一种策略是为配置密钥设置应用程序前缀,以避免潜在的冲突。

Config conf = new backtype.storm.Config();    
// Storm-specific configuration
// ...
// ..
// .

conf.put("my.application.configuration.foo", "foo");
conf.put("my.application.configuration.bar", "foo");

StormSubmitter.submitTopology(topologyName, conf, topology);

2)在Spout / Bolt构造函数中包含组件配置。

Properties properties = new java.util.Properties();
properties.load(new FileReader("config-file"));

BaseComponent bolt = new MyBoltImpl(properties);