【发布时间】:2013-08-06 08:20:01
【问题描述】:
如何为风暴拓扑提供自定义配置?例如,如果我构建了一个连接到 MySQL 集群的拓扑,并且我希望能够在不重新编译的情况下更改需要连接的服务器,我该怎么做?我的偏好是使用配置文件,但我担心文件本身没有部署到集群,因此它不会运行(除非我对集群如何工作的理解有缺陷)。到目前为止,我所见过的在运行时将配置选项传递给风暴拓扑的唯一方法是通过命令行参数,但是当您获得大量参数时,这会很麻烦。
确实有一个想法是利用 shell 脚本将文件读入变量并将该变量的内容作为字符串传递给拓扑,但如果可能的话,我想要一些更简洁的东西。
有没有其他人遇到过这种情况?如果有,你是怎么解决的?
编辑:
似乎需要提供更多说明。我的场景是我有一个拓扑,我希望能够在不同的环境中部署,而无需重新编译它。通常,我会创建一个包含数据库连接参数之类的配置文件并将其传入。我想知道如何在 Storm 中执行类似的操作。
【问题讨论】:
-
我想一个公平的问题是问为什么不重新编译它?构建 jar 的时间应该不会很大。
-
我在将要部署到的系统上没有编译器。例如,与任何数据库的连接都会有所不同,因此我必须能够更改该部分配置而无需重新编译。我也不是负责部署的人,所以它需要简单。我目前的解决方案是利用 Properties 对象并从文件中读取配置。然后,我从中填充storm Config 对象,从而使所有选项都可用于所有螺栓。我只是将螺栓的“名称”添加到简单隔离的选项中。
-
除非我误解了你,否则我们使用 Flux 来实现。 storm.apache.org/releases/2.0.0-SNAPSHOT/flux.html您可以将特定于环境的配置放在单独的文件中并将它们添加到包含部分?
标签: apache-storm