Spring Boot中如何拼接@KafkaListener注解的topicPattern参数
解决方案
这两种需求都能直接实现,借助Spring的占位符语法就能搞定,不需要额外写复杂逻辑。
实现方式
直接在@KafkaListener的topicPattern属性里使用带默认值的占位符:
@KafkaListener(topicPattern = "mytopic1${myvar:}") public void handleMessage(ConsumerRecord<String, String> record) { // 消息处理逻辑 }
原理说明
${myvar:}是Spring的占位符语法,冒号后面的内容是默认值,这里留空表示当myvar未配置时,自动填充空字符串。- 当
application.properties中设置myvar=abc时,topicPattern会被解析为mytopic1abc; - 当
myvar未配置时,topicPattern保持为mytopic1,不会额外拼接内容。
配置示例
- 配置了
myvar的场景(application.properties):
myvar=abc
此时监听的topicPattern为mytopic1abc。
- 未配置
myvar的场景(application.properties中无该变量):
此时监听的topicPattern为mytopic1。
内容的提问来源于stack exchange,提问作者chris01
相关产品推荐
相关产品推荐

