我目前正在使用Spring Kafka API
我们目前要求为Kafka主题动态添加后缀。在尝试修改并将其设置回Annotation“@KafkaListener”时,如下所示 -
@KafkaListener(topics = modifiedTopics)
它给出了一个错误说明 - 注释属性KafkaListener.topics的值必须是数组初始值设定项
或者如果我尝试下面的代码 - (用花括号)
@KafkaListener(topics = {modifiedTopics})
它给我错误说 - 注释属性KafkaListener.topics的值必须是常量表达式
有没有人遇到类似的注释问题?如果有,请帮忙!
答案 0 :(得分:2)
解决方案是:将lambda添加到注释中的一种方法如下: 在KafkaReceiver类的方法中 -
@Autowired
TopicUtil topicUtil;
@KafkaListener(topics = "#{topicUtil.suffixTopics()}")
//In the TopicUtil - add the follwoing method
public String[] suffixTopics() {
return Arrays.asList(pTopics.split(",")).stream().map(p -> p + envSuffix).toArray(String[]::new);
}