我们使用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。有人能帮助理解是否有可能禁用某个主题(主题列表)的侦听吗?
1条答案
按热度按时间8ehkhllq1#
您的两个(或多个)示例可以相同,并接受外部配置中的主题列表。这个
@KafkaListener
允许这样做。Spring来了
@Profile
如果您仍希望在应用程序中保留多个bean,则可以使用。这样你应该切断你的神经@KafkaListener
方法,并用适当的@Profile
,也可以从外部激活。Apache·Kafka的概念是
Consumer Group
这意味着同一组中的所有使用者都将加入代理,但只有其中一个使用者将使用主题中单个分区的记录。这样,不管应用程序的示例数是多少,您仍然可以保持一致性,因为在正确使用kafka组的情况下,不必担心重复。