如何在不分区主题的情况下实现多处理、消费kafka消息?

kkk*_*kkk 4 apache-kafka kafka-consumer-api

我的主题只有一个分区,但我需要实现多重处理。我有大量异步生成的消息,我想异步读取所有这些消息并提交每条消息。

Gio*_*ous 5

AFAIK 如果没有多个分区(即至少两个),就无法实现并行处理。在 Kafka 中,分区是并行级别。此外,Kafka集群中的分区越多,可以实现的吞吐量就越高。

Kafka 主题分为多个分区,通过将数据拆分到多个代理来实现并行性。多个分区使多个消费者能够并行地读取一个主题。因此,为了实现并行处理,您需要将主题划分为多个分区。

为了增加现有主题的分区数量,您只需运行

bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic topicName --partitions 40
Run Code Online (Sandbox Code Playgroud)

但这不会移动现有数据

关于消费者、消费者组和分区的注意事项
如果您有 N 个分区,则同一消费者组内最多可以有 N 个消费者,每个消费者都从单个分区读取数据。当消费者少于分区时,一些消费者将从多个分区中读取数据。此外,如果您的消费者多于分区,那么某些消费者将处于不活动状态,并且根本不会收到任何消息。