允许不同的消费者从Kafka主题中消费相同的消息

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

我有3个消费者订阅了Kafka话题。生产者向主题发布1条消息。

如何确保消息在Kafka内部复制,然后被所有3个消费者使用?

一种方法是不提交消息,但随后消息将继续堆积在主题中。

apache-kafka kafka-consumer-api
3个回答
1
投票

卡夫卡从不复制这些信息。该消息将始终仅路由到主题/分区一次。

但是卡夫卡正在使用消费者群体的概念来区分不同的消费者群体,并决定他们应该如何接收消息。在您的情况下,您必须为每个这些使用者分配不同的使用者组ID。一旦你这样做,他们将开始并行接收消息。

此外,消费者消费后,Kafka中的消息永远不会被删除。它们将存储在主题/分区中,直到它们达到保留限制,该限制可以基于时间(例如,保留消息一周)或者例如按主题大小(保持消息高达100GB)。


0
投票

您唯一需要做的就是为每个消费者分配不同的组ID


0
投票

您应该为3个消费者设置3个不同的消费者群体(具有不同的ID)。

消费者使用消费者组名称标记自己,并且发布到主题的每个记录被传递到每个订阅消费者组中的一个消费者实例。消费者实例可以在单独的进程中,也可以在不同的机器

如果所有使用者实例具有相同的使用者组,则记录将有效地在使用者实例上进行负载平衡。

如果所有消费者实例具有不同的消费者组,则每个记录将广播到所有消费者进程。

来自https://kafka.apache.org/documentation/

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