簡體   English   中英

嵌入式Kafka Broker IP無法在屬性文件中解析

[英]Embedded Kafka Broker IP Not Resolving in Property File

我遇到的問題是我的Kafka ProducerConfig獲取無效的bootstrap.servers值,因為我的單元測試@PropertySource無法解析spring.embedded.kafka.brokers屬性。 當我將生產者配置轉儲到日志時,得到以下信息:

acks = 0
batch.size = 10000
bootstrap.servers = [${spring.embedded.kafka.brokers}]
...

顯然,該屬性沒有得到解決。 假設我有以下嵌入式Kafka測試。

@EmbeddedKafka
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
@RunWith(SpringRunner.class)
public class EmbeddedKafkaTest {

    @Value("${spring.embedded.kafka.brokers}")
    private String embeddedKafkaBrokers;

    @Test
    public void test(){}

    @SpringBootConfiguration
    @PropertySource("classpath:kafkaTestProps.properties")
    @EnableAutoConfiguration
    class EmbeddedKafkaTestConfiguration {
    }

}

我的kafkaTestProperties.properties文件如下:

embedded-kafka-brokers=${spring.embedded.kafka.brokers}
...

最終, embedded-kafka-brokers將通過一些基本的自動配置提供給Kafka的ProducerConfig

有趣的是,測試類中的embeddedKafkaBrokers實例字段確實包含由嵌入式kafka設置的代理IP。

我得出的結論是,屬性源加載順序存在問題,其中@EmbeddedKafka並未及時設置代理IP系統屬性,以便kafkaTestProperties.properties解決該問題。 將我們的代碼庫移植到Spring Kafka API已升級到的Spring Boot 2和Spring Cloud Finchley SR2之后,就會出現此問題。

我試過刪除@SpringBootTest並將@SpringBootTest test()代碼包裝在SpringApplicationBuilder中無濟於事。

關於如何解決此問題的任何建議? 也許我可以利用@AutoConfigurationAfter@Order 有沒有一種方法可以命令加載屬性源?

您的占位符似乎無效。 嘗試更換:

embedded-kafka-brokers=${"spring.embedded.kafka.brokers"}

有:

embedded-kafka-brokers=${spring.embedded.kafka.brokers}

並使用帶有@ConfigurationProperties的類或@Value(“ $ {embedded-kafka-brokers}”)將其提供給生產者。

文檔鏈接

暫無
暫無

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

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