我面临一个问题,我的Kafka ProducerConfig
正在得到一个无效的 bootstrap.servers
因为我的单元测试 @PropertySource
不是在解决问题吗 spring.embedded.kafka.brokers
财产。当我将producer配置转储到日志时,会得到以下结果:
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` test类中的instance字段不包含embedded kafka设置的代理IP。
我的结论是房源加载顺序有问题,在哪里 `@EmbeddedKafka` 没有及时设置代理ip系统属性 `kafkaTestProperties.properties` 去解决它。这个问题是在将我们的代码库移植到springboot2和springcloudfinchleysr2之后出现的,springkafkaapi在那里进行了升级。
我试过把 `@SpringBootTest` 然后把它包起来 `test()` a中的代码 `SpringApplicationBuilder` 无济于事。
有什么建议可以帮我解决吗?或许我可以利用 `@AutoConfigurationAfter` 或者 `@Order` ? 有没有办法订购房源装载?
1条答案
按热度按时间mhd8tkvw1#
您的占位符似乎无效。尝试替换:
embedded-kafka-brokers=${"spring.embedded.kafka.brokers"}
使用:embedded-kafka-brokers=${spring.embedded.kafka.brokers}
并使用带有@configurationproperties的类或使用@value(${embedded kafka brokers})将其提供给生产者。文档链接