我目前正在做的事情如下:
val topic = "mytopic"
val zkhosts = "localhost"
val zkports = "2181"
在我的代码中设置然后将其发送到kafkastream函数有效,但我想从.properties
文件中读取它。有没有可能的解决方案?
答案 0 :(得分:2)
在/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 config lib。 Scala有很多包装器,但是在原始形式中你可以做类似的事情:
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"))
(有很多方法可以让它变得更好和更紧凑。我在这里使用最常见的形式)