spring云流kafka绑定器配置更新

wydwbb8l  于 2021-07-15  发布在  Java
关注(0)|答案(1)|浏览(343)

我正在使用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
}
vxf3dgd4

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 . 然后这个新值将在应用程序运行期间生效。

相关问题