2017-04-03 17 views
0

私はSpring-KafkaとBootでプロジェクトに取り掛かりました。プロパティspring.kafkaのapplication.propertiesでホスト名を取得したいと考えています。 consumer.client-Idを使用すると、問題が発生した場合に、各コンシューマをサーバ側のログで区別することができます。Spring Boot - Spring-KafkaクライアントIDのapplication.propertiesでホスト名を取得する

私はそれを行う方法がありますか?私は、春のブートリファレンスガイドとjava.lang.Systemクラスをチェックしましたが、実り多いポインタは見つかりませんでした。

答えて

1

はここに1つの方法だ - 私は、ブートアプリ自体にそれをやったが、それはどんな豆で行うことができ、この場合は...あなたの設定に

@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(); 
     } 
    } 

} 

EnvironmentAware 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 
... 

application.properties:あなたが見ることができるように

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

client-idが上書きされます。

関連する問題