嵌入的kafka代理ip未在属性文件中解析

cuxqih21  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(341)

我面临一个问题,我的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` ? 有没有办法订购房源装载?
mhd8tkvw

mhd8tkvw1#

您的占位符似乎无效。尝试替换: embedded-kafka-brokers=${"spring.embedded.kafka.brokers"} 使用: embedded-kafka-brokers=${spring.embedded.kafka.brokers} 并使用带有@configurationproperties的类或使用@value(${embedded kafka brokers})将其提供给生产者。
文档链接

相关问题