spring 如何在应用程序启动时确定@KafkaListener的Kafka主题?

jk9hmnmh  于 2023-01-24  发布在  Spring
关注(0)|答案(1)|浏览(152)

我们有5个主题,我们希望有一个服务,规模,例如同一应用程序的5个示例。
这意味着我希望动态地(例如通过Redis锁定或类似机制)确定哪个示例应该监听哪个主题。
我知道我们可以有一个主题有5个分区-同一个消费者组中的每个节点将选择一个分区。同样,如果我们有一个单独部署的服务,我们可以通过属性设置主题。
问题是,这两个是不适合我们的情况,我们想看看是否有可能做到这一点,通过我上面解释。

@PostConstruct
private void postConstruct() {
   // Do logic via redis locking or something do determine topic
   dynamicallyDeterminedVariable = // SOME LOGIC
}

@KafkaListener(topics = "{dynamicallyDeterminedVariable")
  void listener(String data) {
    LOG.info(data);
  }
ntjbwcob

ntjbwcob1#

可以,您可以使用Spel作为主题名称。
#{@someOtherBean.whichTopicToUse()}.

相关问题