Kafka 总是有一个消费者消费一组中的主题消息

问题描述 投票:0回答:2

我有两个具有相同组ID的消费者服务器订阅了相同的主题。 一台 kafka 服务器仅运行一个分区。 据我所知,消息应该在这两个消费者服务器中随机消费。 但现在似乎总是同一个消费者服务器A消费消息,另一台不消费消息。如果我停止消费者服务器A,另一台就可以正常工作。 我期望他们可以随机消费消息。

apache-kafka kafka-consumer-api kafka-producer-api
2个回答
3
投票

为了能够并行使用两个消费者实例,您需要在主题中至少有两个分区。消费者将绑定到一个主题的一个或多个分区,并且具有相同 groupId 的其他消费者不会声明已经有消费者绑定到的分区。如果消费者失败/崩溃,分区将被释放,然后由另一个消费者实例拾取。


0
投票

主题分区在消费者出现时被分配给消费者,并不断轮询同一分区以获取新消息,直到消费者死亡并且另一个消费者拾取特定分区。为了获得更好的吞吐量,您应该拥有更多的分区和消费者,但要考虑消息的排序。您可能需要遵循分区键,这将允许相同的键消息落入同一分区并提供排序保证。

© www.soinside.com 2019 - 2024. All rights reserved.