English 中文(简体)
当你多次听到有关某个主题的服务时,情况如何?
原标题:what happens when you have multiple instances of a services listening on a topic?

My understanding is that Spring-kafka manages concurrency within a service. i.e. a listener will only consume messages from an assigned partition.

如果有多种服务(可能与自己的一组听众一起)的话,情况是否如此?

例如,有2个有3名听众的服务(同一组各有3名)从一个有6个分位的专题中消耗。

问题回答

大赦国际的答复非常准确:

Q: With spring boot microservice and spring-kafka, if my topic has two partitions and I set the concurrency to 2, what would happen if I start a second service instance? Will there be 4 consumers in the same group and 2 of them starves?

A: In a Spring Boot microservice with Spring-Kafka, if your topic has two partitions and you set the concurrency to 2, it means that you have two threads in your KafkaListener, each of which can consume from a separate partition.

当你开始第二次服务时,还将创造另外两个消费者(假设同一组合)。 这些消费者将加入同一个消费者群体。 然而,由于这个专题只有两个分门别类,每个分门别类只能由一个消费者在某个群体消费,因此两名消费者不会收到任何信息。 这是因为,卡夫卡的消费者议定书将在新消费者加入消费者团体时引发重新平衡,而在重新平衡的过程中,卡夫卡将努力将这一议题分给集团所有消费者,以实现负荷平衡。

因此,在您的设想中,如果另外两个消费者都活着并使用电文,那么你实际上会有4个消费者,但其中2个消费者不会收到任何电文。 这常常被称作消费者团体中的“星号”。 如果活跃的消费者之一倒闭,卡夫卡将引发另一种再平衡,而“星号”消费者之一将开始接收信息。

请注意,这一行为基于Kafka的设计,以确保分治中的每一电文都按顺序使用。 如果你想增加投入,你可以考虑增加贵国专题的分部分数目。 但记得,更多的分门别类可能会导致更多的平衡,从而影响业绩。 必须根据您的具体使用情况找到平衡点。





相关问题
Kafka stream for processing event which takes long time

I have a Spring Boot Kafka Stream application that reads the records do some HTTP calls and transform the record into another form. This transform record is then sent to the producer. final KStream<...

热门标签