多个消费者消费 kafka 消息

kafka 配置

配置分区数

effe7f4053ee2903a3436fa217b33cac.png
这是 kafka 集群的典型部署模式。
消费组保证了:
一个分区只可以被消费组中的一个消费者所消费
一个消费组中的一个消费者可以消费多个分区,例如 C1 消费了 P0, P3 。
一个消费组中的不同消费者消费的分区一定不会重复,例如:
C1 -> P0、P3 C2 -> P1、P2
所有消费者一起消费所有的分区,例如 C1 和 C2 共同完成了对 P0、P1、P2、P3 的消费。
在不同消费组中,每个消费组都会消费所有的分区,例如,消费组 A、消费组 B 都消费了 P0、P1、P2、P3 。
同一个消费组里面的消费者对分区是互斥的,例如 C1 和 C2 不会消费同一个分区;而分区在不同的消费组间是共享的。

一个 group 中的 consumer 数 需小于 topic 中的 partitions 分区数(一个 partitions 只能被一个 consumer 进行消费;一个 consumer 可以消费多个 partitions)

多个消费者时,只需要配置 kafka 中分区数大于等于消费者数量就可以保证每个消费者都会有任务进行处理。

[root@loaclhost kafka_2.12-1.1.0]# cd config
[root@loaclhost config]# ls
connect-console-sink.properties    connect-file-sink.properties    connect-standalone.properties  producer.properties     zookeeper.properties
connect-console-source.properties  connect-file-source.properties  consumer.properties            server.properties
connect-distributed.properties     connect-log4j.properties        log4j.properties               tools-log4j.properties
[root@loaclhost config]# vim server.properties 
# The default number of log partitions per topic. More partitions allow greater
# parallelism for consumption, but this will also result in more files across
# the brokers.
num.partitions=4

springboot 使用 kafka