我有一个包含喷口/螺栓的Storm拓扑。 有一些特定于特定喷口的配置数据 我还想使用一个特定的螺栓(即从配置文件中读取) 所以它不是硬编码的。配置数据的示例是文件名 spout是读取和一个bolt要写入的文件名。 我认为配置数据传递给open和prepare方法。
如何合并配置文件中的组件特定数据?
答案 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);