我有以下定義:
@KafkaListener(
topics = "${app.kafka.eventTopic}",
groupId = "${app.kafka.consumerGroupId}",
concurrency = "${app.kafka.concurrency}"
)
我在我的 yaml 檔案中定義了這些配置屬性,例如:
app:
kafka:
eventTopic: topicName
consumerGroupId: groupName
concurrency: 10
我是 SpringBoot 的新手,我看到一些 SO 帖子聲稱像 ${app.kafka.eventTopic} 這樣的語法對@Value() 注釋不起作用,并且需要 ConfigurationProperties 類將屬性值“轉換”為 Java 變數。如果@Value 注釋確實如此,那么它在 KafkaListener 注釋內容中的作業方式是否相同?
uj5u.com熱心網友回復:
這應該在沒有任何“翻譯器”的普通 Spring Boot 應用程式中作業。例如,只要相應的屬性在您的application.propertiesor 中,這應該可以正常作業application.yaml:
@KafkaListener(
topics = "${kafka.topics.consume.somedata}",
id = MyConsumer.CONTAINER_ID)
您甚至可以使用更高級的 SPeL 運算式,例如:
@KafkaListener(topics = "#{'${consumer.topics}'.split(',')}", ...)
您可以在此處閱讀有關 SpEL 的更多資訊。
實際上,Value 和 KafkaListener 注釋的處理方式略有不同。一個由AutowiredAnnotationBeanPostProcessor 提供,另一個由KafkaListenerAnnotationBeanPostProcessor 提供。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/384502.html
