我正在使用springcloudstream和kafka绑定器使用sasl连接到kafka集群。sasl配置如下所示:
spring.cloud.stream.kafka.binder.configuration.sasl.mechanism=SCRAM-SHA-512
spring.cloud.stream.kafka.binder.configuration.sasl.jaas.config= .... required username="..." password="..."
spring.cloud.stream.kafka.binder.configuration.security.protocol=SASL_SSL
我想以编程方式/在运行时更新用户名和密码,如何在springcloudstream中使用springkafka绑定来实现这一点?
旁注:使用 BinderFactory
我可以参考 KafkaMessageChannelBinder
哪个有 KafkaBinderConfigurationProperties
,在其 configuration
hashmap我可以看到这些配置,但我想知道如何在运行时更新配置,以便这些更改也反映在连接中?
@Autowired
BinderFactory binderFactory
....
public void foo()
{
KafkaMessageChannelBinder k = (KafkaMessageChannelBinder)binderFactory.getBinder(null, MessageChannel.class);
// Using debugger I inspected k.configurationProperties.configuration which has the SASL properties I need to update
}
1条答案
按热度按时间vxf3dgd41#
jaas用户名和密码可以使用configuration提供,这也意味着可以在运行时使用相同的属性覆盖它们。
举个例子:https://github.com/spring-cloud/spring-cloud-stream-samples/blob/master/multi-binder-samples/kafka-multi-binder-jaas/src/main/resources/application.yml#l26
在运行时,可以重写中设置的值
application.properties
. 例如,如果您使用java -jar
,您可以简单地传递属性:spring.cloud.stream.kafka.binder.jaas.options.username
. 然后这个新值将在应用程序运行期间生效。