我正在使用Spring云流和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
我想以编程方式/在运行时更新用户名和密码,如何在Spring Cloud Stream中使用Spring Kafka binders做到这一点?
旁注:使用BinderFactory,我可以在其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
}
我昨天遇到了这个问题,花了大约3-4个小时来研究如何使用Spring Kafka binders以编程方式更新Spring Cloud Stream中的用户名和密码,因为人们不能/不应该在Git中存储密码。(Spring Boot版本2.5.2)重写bean KafkaBinderConfigurationProperties有效。
@Bean
@Primary
public KafkaBinderConfigurationProperties kafkaBinderConfigurationProperties(KafkaBinderConfigurationProperties properties) {
String saslJaasConfigString = "org.apache.kafka.common.security.scram.ScramLoginModule required username=${USERNAME_FROM_EXTERNAL_SYSTEM_LIKE_VAULT} password=${PASSWORD_FROM_EXTERNAL_SYSTEM_LIKE_VAULT}"
Map<String, String> configMap = properties.getConfiguration();
configMap.put(SaslConfigs.SASL_JAAS_CONFIG, saslJaasConfigString);
return properties;
}
可以使用配置提供jaas用户名和密码,这也意味着可以在运行时使用相同的属性覆盖它们。
以下是一个示例:https://github.com/spring-cloud/spring-cloud-stream-samples/blob/master/multi-binder-samples/kafka-multi-binder-jaas/src/main/resources/application.yml#L26
在运行时,您可以覆盖应用程序中设置的值。属性。例如,如果您使用java-jar运行应用程序,您可以简单地传递属性:spring。云流动Kafka。粘合剂jaas。选项。用户名
。然后,此新值将在应用程序运行期间生效。
我需要在运行时更改与数据库的连接。例如,如果请求的参数是BD1,则连接数据库1,如果是BD2,则连接数据库2,等等。 我用的是Spring靴。最好的方法是什么。 我有这个,但不知道说我的存储库如何使用。
问题内容: 我有一个页面,其中发生了许多耗时的功能。我想做的是在过程的每个步骤完成后,更新网页以使用户知道刚刚完成的步骤。本质上,用户提交查询,然后服务器查询数据库,处理数据,绘制图像并在页面上显示结果。我想让网页说出该功能执行的步骤。它会说“先查询”然后“正在处理” …等等。 伪: 我已经研究过使用Ajax来更新页面而不重新加载它,但是根据我的简单理解(对Ajax零经验),客户端将向服务器请求文
为什么有运行时配置? 我们通过 .umirc.js 做编译时的配置,这能覆盖大量场景,但有一些却是编译时很难触及的。 比如: 在出错时显示个 message 提示用户 在加载和路由切换时显示个 loading 页面载入完成时请求后端,根据响应动态修改路由 这些在编译时就很难处理,或者不能处理了。 配置方式 umi 约定 src 目录下的 app.js 为运行时的配置文件。 + src - ap
运行时配置和配置的区别是他跑在浏览器端,基于此,我们可以在这里写函数、import 浏览器端依赖等等,注意不要引入 node 依赖。 配置方式 约定 src/app.js 为运行时配置。运行时配置的类型有三种,具体查看applypluginstype。 配置项 beforeRender beforeRender(lastOpts) 在渲染之前执行,执行action过程中显示 loading 配置的
问题内容: 我有hibernate.cfg.xml文件。 ..................... 这是文件中最有趣的部分。现在,我必须设置缺少的值:URL,用户名,密码。我正在尝试以这种方式: 但这只是从hibernate.cfg.xm加载我的配置,并且不更改任何属性… url,用户名,密码-是命令行参数,因此我必须在运行时设置它们。 问题答案: 尝试在这里打电话。 并且属性可能需要具有hib
我们如何使用Spring-Cloud-stream-binder-kinesis建立两个AWS kinesis连接? 第一个连接:Spring应用程序和AWS kinesis流在同一个AWS账户中。 第二个连接:其他AWS运动流位于不同的AWS帐户中。 从spring应用程序到不同AWS帐户中的两个不同运动流是否可能有两个不同的连接?如果是,我们如何实施?