【发布时间】:2018-10-10 13:08:07
【问题描述】:
我有以下application.yml:
service:
kafka:
groupId: 345
consumer:
topics:
-
name: response
producer:
topics:
-
name: request1
num-partitions: 5
replication-factor: 1
-
name: request2
num-partitions: 3
replication-factor: 1
如何使用 spel 访问主题名称列表以传递给 KafkaListener 注释?
@KafkaListener(topics = "#{'${service.kafka.consumer.topics.name}'}", containerFactory = "kafkaListenerContainerFactory")
public void receive(String payload, @Header(KafkaHeaders.RECEIVED_TOPIC)String topic) {
【问题讨论】:
-
查看我的答案here 在撰写本文时,我没有找到更优雅的方式
-
@Paizo 我不能使用逗号分隔的主题,因为我需要与每个主题相关的其他参数
-
然后我会使用
@ConfigurationProperties来代替@KafkaListener 使用@Bean来定义它。除非你用SPEL表达式找到了一个漂亮的方法(我没有),否则我很乐意看到如何:) -
使用
@ConfigurationProperties,您可以对主题集合使用投影;看我的回答。
标签: spring-boot yaml spring-kafka