[英]Cannot subscribe multiple consumers to Spring Kafka Test embedded Kafka broker
[英]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.