如何从属性文件设置kafka参数?

gfttwv5a  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(369)

我目前正在做的工作如下:

val topic = "mytopic"
val zkhosts = "localhost"
val zkports = "2181"

在我的代码中设置它,然后将它发送到kafkastream函数,这样做是可行的,但我想从 .properties 文件。有什么可能的解决办法吗?

yr9zkbsy

yr9zkbsy1#

给这个属性文件 /tmp/sample.properties ```
kafka.topic = "mytopic"
kafka.zkhost = "localhost"
kafka.zkports = 2191

我们可以使用普通的旧java `Property` 加载属性的api:

import java.io.FileReader
val configFile = new java.io.File("/tmp/sample.properties")
val reader = new FileReader(configFile)
val props = new Properties()
props.load(reader)
reader.close()

您也可以像在任何其他程序上一样,使用您喜爱的配置库来加载属性文件。
例如,您可以使用流行的typesafe配置库。scala有很多 Package 器,但在它的原始形式中,您可以执行以下操作:

import com.typesafe.config.ConfigFactory
val configFile = new java.io.File("/tmp/sample.properties")
val kafkaConfig = ConfigFactory.parseFile(configFile)

import java.util.Properties
val kafkaProperties = new Properties()
kafkaProperties.put("zookeeper.hosts", kafkaConfig.getString("kafka.zkhost"))
kafkaProperties.put("zookeeper.port", kafkaConfig.getInt("kafka.zkports"):java.lang.Integer)
kafkaProperties.put("kafka.topic", kafkaConfig.getString("kafka.topic"))

(有很多方法可以使它变得美观紧凑。这里我用的是最常见的形式)

相关问题