我们有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);
}
1条答案
按热度按时间ntjbwcob1#
可以,您可以使用Spel作为主题名称。
#{@someOtherBean.whichTopicToUse()}
.