我正在开发一个SpringBootKafka消费者应用程序。它将有不同的消费者在不同的主题上工作。消费者的所有信息都来自application.yml文件。
application:
kafka:
consumer-config:
- name: consumer-a
topics: topic1,topic2
......
- name: consumer-b
topics: topic3,topic4
.....
我无法将应用程序属性中的主题列表设置为kafkalistener。
我尝试了以下方法:
@KafkaListener(topics = "#{'${application.kafka.consumer-config[0].topics}'.split(',')}",containerFactory = "kafkaListenerContainerFactory")
@KafkaListener(topics = "#{'${application.kafka.consumer-config.?[name == 'consumer-a'].topics}'.split(',')}", containerFactory = "kafkaListenerContainerFactory")
在这两种情况下,我得到以下错误:
java.lang.illegalargumentexception:无法解析占位符
从应用程序属性获取主题并将其设置为kafkalistener主题的最佳方法是什么?
1条答案
按热度按时间sqyvllje1#
你用的是什么版本?我刚测试过,效果很好。。。
2020-08-25 13:02:28.384 warn 66237---[o63583349-0-c-1]org.apache.kafka.clients.networkclient:[consumer clientid=consumer-so63583349-1,groupid=so63583349]获取相关id为41的元数据时出错:{topic1=unknown\u topic\u或\u partition,topic2=unknown\u topic\u或\u partition}
对于第二个,不能在属性占位符中使用spel选择。对于这种情况,有一种解决办法: