斯普林Kafka从一系列主题中禁用了听力

tvz2xvvm  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(317)

我们使用springkafka配置来接收来自上游系统的消息。我们有用于主题配置的java配置

@Bean(id="firstcontainer")
protected ConcurrentMessageListenerContainer createContainerInstance(...) {
//topics addition
}

@Bean(id="secondcontainer")
protected ConcurrentMessageListenerContainer createContainerInstance(...) {
//topics addition
}

@KafkaListener(firstcontainer)
public void listenerFirst(){

}

@KafkaListener(secondcontainer)
public void listenerSecond(){

}

这个代码工作得非常好,因为我们有单独的containerfactory。现在我们需要启动这个应用程序的多个示例,其中一个示例将侦听firstcontainer,而secondcontainer将被禁用
对于第二个示例,它将只启用secondcontainer和禁用firstcontainer。有人能帮助理解是否有可能禁用某个主题(主题列表)的侦听吗?

8ehkhllq

8ehkhllq1#

您的两个(或多个)示例可以相同,并接受外部配置中的主题列表。这个 @KafkaListener 允许这样做。
Spring来了 @Profile 如果您仍希望在应用程序中保留多个bean,则可以使用。这样你应该切断你的神经 @KafkaListener 方法,并用适当的 @Profile ,也可以从外部激活。
Apache·Kafka的概念是 Consumer Group 这意味着同一组中的所有使用者都将加入代理,但只有其中一个使用者将使用主题中单个分区的记录。这样,不管应用程序的示例数是多少,您仍然可以保持一致性,因为在正确使用kafka组的情况下,不必担心重复。

相关问题