注释属性KafkaListener.topics必须是数组初始值设定项或常量表达式

时间:2018-03-12 01:24:39

标签: annotations apache-kafka

我目前正在使用Spring Kafka API

我们目前要求为Kafka主题动态添加后缀。在尝试修改并将其设置回Annotation“@KafkaListener”时,如下所示 -

@KafkaListener(topics = modifiedTopics)

它给出了一个错误说明 - 注释属性KafkaListener.topics的值必须是数组初始值设定项

或者如果我尝试下面的代码 - (用花括号)

@KafkaListener(topics = {modifiedTopics})

它给我错误说 - 注释属性KafkaListener.topics的值必须是常量表达式

有没有人遇到类似的注释问题?如果有,请帮忙!

1 个答案:

答案 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);
      }