是否可以将环境变量引用为 Kafka kafkaProducer.properties 和 KafkaConsumer.properties 文件中的属性值

is it possible to refer environmental variable as values for properties in the kafkaProducer.properties and KafkaConsumer.properties files of Kafka

我有一个生产者和消费者 java 代码,我正在尝试升级它以连接受 SSL 保护的 Kafka。我的情况是,与 ssl 相关的密码只能通过环境变量给出。 那么是否可以直接引用KafkaProducer.properties和KafkaConsumer.properties文件中环境变量引用的值

例如: 我在linux系统SSL_KEY_PASSWORD=password

中声明了一个环境变量

在 KafkaProducer/Consumer 属性中,我声明为, ''' ssl.key.password=${SSL_KEY_PASSWORD} '''

示例 KAFKA Consumer/Producer 属性 文件配置可能如下所示,

# 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}

不要认为属性文件值是内插的,但您可能可以测试一次。或者,您也可以从 属性 文件中删除这些行,然后从类似下面的代码中执行此操作...

   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

不,他们不能。

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

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