You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确从application.properties注入KafkaTopic到@KafkaListener

解决@KafkaListener中配置文件注入Topic带引号的问题

问题根源

你在application.properties中配置的mytopic.topic="testtopic"包含了双引号,Spring读取配置时会把引号当作值的一部分,导致注入到@KafkaListener的topic名称变成了"testtopic"(带引号),而实际你的Kafka集群中存在的是testtopic,因此触发missingTopicsFatal=true的报错。

正确解决方案

方案1:修改配置文件(推荐)

直接去掉配置值的双引号,配置文件内容改为:

mytopic.topic=testtopic

之后保持@KafkaListener的写法不变即可:

@KafkaListener(topics = "${mytopic.topic}")

方案2:通过SpEL处理引号(仅特殊场景使用)

如果因特殊原因无法修改配置文件,可以使用Spring表达式语言(SpEL)在注入时去除引号:

@KafkaListener(topics = "#{${mytopic.topic}.replace('\"', '')}")

验证方法

可以通过@Value注解获取配置值并打印,确认注入的topic名称不带引号:

@Value("${mytopic.topic}")
private String topicName;

// 在初始化方法或日志中打印验证
System.out.println("注入的topic名称:" + topicName);

内容的提问来源于stack exchange,提问作者curiousengineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:05:56