gpt4 book ai didi

spring-boot - Spring Boot - 在 application.properties 中获取 Spring-Kafka 客户端 Id 的主机名

转载 作者:行者123 更新时间:2023-12-04 02:06:13 25 4
gpt4 key购买 nike

我正在使用 Spring-Kafka 和 Boot 开发一个项目,我想在 application.properties 中获取属性 spring.kafka.consumer.client-Id 的主机名,以便我的每个消费者都可以在服务器端日志应该有问题。

有什么办法可以做到吗?我查看了 spring boot 引用指南和 java.lang.System 类,但找不到有用的指针。

最佳答案

这是一种方法 - 将 EnvironmentAware bean 添加到您的配置中...

@SpringBootApplication
public class So43191948Application implements EnvironmentAware {

public static void main(String[] args) throws Exception {
ConfigurableApplicationContext context = SpringApplication.run(So43191948Application.class, args);
@SuppressWarnings("unchecked")
KafkaTemplate<String, String> template = context.getBean(KafkaTemplate.class);
template.send("so43191948", "foo");
Thread.sleep(10000);
context.close();
}

@KafkaListener(topics = "so43191948")
public void foo(String in) {
System.out.println(in);
}

@Override
public void setEnvironment(Environment environment) {
Properties props = new Properties();
try {
props.setProperty("spring.kafka.consumer.client-id", InetAddress.getLocalHost().getHostName() + ".client");
PropertiesPropertySource propertySource = new PropertiesPropertySource("myProps", props);
if (environment instanceof StandardEnvironment) {
((StandardEnvironment) environment).getPropertySources().addFirst(propertySource);
}
}
catch (UnknownHostException e) {
e.printStackTrace();
}
}

}

在这种情况下,我是在引导应用程序本身中完成的,但它可以在任何 bean 中完成。

2017-04-03 16:12:32.646  INFO 64879 --- [           main] o.a.k.clients.consumer.ConsumerConfig    
: ConsumerConfig values:
auto.commit.interval.ms = 5000
auto.offset.reset = earliest
bootstrap.servers = [localhost:9092]
check.crcs = true
client.id = myhost.client
...

应用程序属性:

spring.kafka.consumer.client-id=foo
spring.kafka.consumer.group-id=myGroup
spring.kafka.consumer.auto-offset-reset=earliest

如您所见,client-id 已被覆盖。

关于spring-boot - Spring Boot - 在 application.properties 中获取 Spring-Kafka 客户端 Id 的主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43191948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com