ConcurrentKafkaListenerContainerFactory 是否增加了消费来自 Kafka 主题的消息的并行度

Does ConcurrentKafkaListenerContainerFactory increases parallelism in consumption of messages from Kafka Topics

我一直读到 Kafka 只将一个消费者实例(线程)分配给一个分区。我最近遇到了 ConcurrentKafkaListenerContainerFactory 并且正在阅读它,有些方面似乎与我之前知道的相矛盾。

假设我们有一个消费者实例 (pod/machine),在其中我使用 ConcurrentKafkaListenerContainerFactory 并将并发级别设置为三个 3 。我有一个包含三个分区的 Kafka 主题。将并发级别设置为三时,我知道我的 @KafkaListener 方法将从主题的所有三个分区读取消息

这是否意味着即使使用一个消费者实例,我们也能够并行消费来自三个分区的消息。

这可以用作替代品来提高 Kafka 主题的消费率而不增加分区数量吗?我知道的唯一其他方法是创建一个线程池并将接收到的消息提交给它。 我们可以使用 ConcurrentKafkaListenerContainerFactory 来替代这个过程吗,因为这听起来确实更容易实现

ConcurrentKafkaListenerContainer 根据您的配置创建 KafkaConsumer 个实例。这就是你可以并行读取不同分区的方式。

不要将 KafkaConsumer 对象与一般消费者实体定义混合。换句话说,您的消费者应用程序绝对不是 Apache Kafka 定义的 Kafka 消费者对象。这不是第一次,虽然我听说人们称他们的应用程序为“Kafka Consumer”……你读了什么文档让你这么认为?

在 Apache Kafka 的 Spring 文档中查看有关并发的更多信息:https://docs.spring.io/spring-kafka/docs/current/reference/html/#message-listener-container