簡體   English   中英

春季靴子性能yaml

[英]spring boot properties yaml

我使用自動配置(僅通過注釋)運行spring boot和kafka,並在.yaml文件中定義了道具,即:

spring:
  kafka:
    bootstrap-servers: someserver:9999
    consumer:
      group-id: mygroup
....

 @KafkaListener()
  public void receive(ConsumerRecord<?, ?> consumerRecord) {
....
  }

它可以正常工作,彈簧圖,即正確的字段組ID。

但是當我嘗試使用相同的yaml文件手動配置kafka(與ConsumerFactory和ConsumerConfig一起使用)時,我遇到了問題。 在類ConsumerConfig中,kafka屬性以命名。 名稱上,而不是_即:

public static final String GROUP_ID_CONFIG = "group.id";

所以我不能只將它們加載到map中,然后將map傳遞給ConsumerFactory,因為鍵使用_ not。

我不想像spring kafka團隊提供的示例中那樣丑陋,當他們將yaml中的props映射到config類,然后在map中手動分配props傳遞給工廠時:

@ConfigurationProperties(prefix = "kafka")
public class ConfigProperties {

    private String brokerAddress;

    private String topic;

    private String fooTopic;

    public String getBrokerAddress() {
        return this.brokerAddress;
    }

.....

    @Bean
    public ProducerFactory<String, String> producerFactory() {
        Map<String, Object> props = new HashMap<>();
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, this.configProperties.getBrokerAddress());
    .....

        return new DefaultKafkaProducerFactory<>(props);
    }

如果要使用yml文件中的虛線屬性,則需要像boot那樣對不直接作為啟動屬性支持的任意屬性進行啟動:

spring:
  kafka:
    consumer:
      properties:
        group.id: foo

即填充Properties屬性。

引導為某些屬性提供一流的支持的原因是,IDE編輯器可以提供內容輔助,而任意屬性是不可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM