KafkaListener监听kafka主题的时候,尝试了很多方法,例如:
第一种,通过$符号获取配置文件,该方式订阅失败,原因未知
@KafkaListener(topics = "${kafka.topics.workHourReporting}")
第二种方式,通过@符号获取类中的变量,也订阅失败,原因是在KafkaListener中使用@获取类成员变量是不支持的
@Value("${kafka.topics.workHourReporting}")
private String workHourReportingTopic;
@KafkaListener(topics = "@HourKafkaConsumer.workHourReportingTopic")
第三种方式,通过spring表达式语言(SpEL),订阅失败,这个一般适用于某些特定场景
@KafkaListener(topics = "#{__listener.workHourReportingTopic}")
第四种方式,也是使用SpEL去动态解析,这种方式可以解析出多个主题,订阅成功
@KafkaListener(topics = {"#{'${kafka.topics.workHourReporting}'.split(',')}"})
或者直接写死变量,也可以成功订阅
@KafkaListener(topics = "topic-test")