背景: 在公司的SpringBoot項目中使用註解 @org.springframework.kafka.annotation.KafkaListener 的時候,kafka的topic可以使用註解中的topics屬性自行設定,但是問題是,公司在每個環境的topicName不一樣,項目的結構是SpringBoot在啓動的時候會讀取相應環境(int、uat、pro)的yml文件,所以現在的問題是需要在啓動的時候,根據環境變量的輸入來決定監聽哪個topic.
正常使用的方式可能是如下的樣子:
@KafkaListener(topics = "myTopic")
public void process(String content) {
//TODO
}
那麼怎麼讓myTopic變成動態輸入的呢?
可以在yml配置文件中新增配置: topicName: defaultname
修改原先的代碼爲:
@KafkaListener(topics = "${topicName}")
public void process(String content) {
//TODO
}
這樣就可以了。