是否可以将环境变量作为kafkaProducer.properties和KafkaConsumer.properties



我有一个生产者和消费者的java代码,我试图升级它以连接到使用SSL保护的Kafka。我所处的情况是,与ssl相关的密码只能通过环境变量提供。因此,是否可以直接引用KafkaProducer.properties和KafkaConsumer.properties文件中环境变量引用的值

例如:我在linux系统中声明了一个环境变量SSL_KEY_PASSWORD=密码

在KafkaProducer/Consumer属性中,我声明,"ssl.key.password=${ssl_key_password}">

示例KAFKA消费者/生产者属性文件配置可能看起来像

# For SSL
security.protocol=SSL
ssl.truststore.location=/var/private/ssl/client.truststore.jks
ssl.truststore.password=${TRUSTSTORE_PASS_ENV_VARIABLE}
# For SSL auth
ssl.keystore.location=/var/private/ssl/client.keystore.jks
ssl.keystore.password=${KEYSTORE_PASS_ENV_VARIABLE}
ssl.key.password=${KEY_PASS_ENV_VARIABLE}

不,他们不能。

不清楚您是如何使用这些文件或Kafka客户端的。如果使用shell命令,则应该围绕正在运行的命令创建一个bash包装器,该包装器使用sed或其他模板脚本来生成文件,然后再运行最终命令。

如果您实际上正在编写Java代码,那么从那里的环境中构建Properties,而不是使用文件。

不要认为属性文件值是插值的,但可能可以测试一次。或者,您也可以从属性文件中删除这些行,并从下面的代码中执行。。。

final Properties properties = new Properties();
final FileInputStream input = new FileInputStream(yourExistingFile);

properties.load(input); 
properties.put("ssl.key.password",System.getenv("SSL_KEY_PASSWORD"));//this is additional property

相关内容

  • 没有找到相关文章

最新更新