0

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

例如:我在linux系统中声明了一个环境变量 SSL_KEY_PASSWORD=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}
4

2 回答 2

1

不,他们不能。

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

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

于 2021-07-12T23:49:51.600 回答
0

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

   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
于 2021-07-09T05:10:30.387 回答