是否可以将环境变量引用为 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 代码,则从那里的环境构建属性,而不是使用文件。
我有一个生产者和消费者 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 代码,则从那里的环境构建属性,而不是使用文件。