如何理解 spring kafka 中的 consumer 和 listener

how to understand consumer and listener in spring kafka

我使用spring具有多线程特性的kafka(ConcurrentKafkaListenerContainerFactory),我发现了两种类型的线程名称,如下所示: 1. #0-1-kafka-消费者-1 2. #0-1-kafka-listener-3

那我怎么理解这两种线程呢?他们之间是什么关系? 提前致谢!

在以前的 Kafka 版本 (< 0.10.1) 中,拥有缓慢的听众是一件痛苦的事情。非活动的消费者线程被视为已死,因此发生了重新平衡。这就是为什么我们引入了线程交接并将用于在侦听器中处理的记录传递到单独线程的原因。所以,那些线程前缀正是关于那个。

在最新版本 2.0 中,基于 Kafka 0.10.2 我们删除了该逻辑,因为现在心跳发生在 Kafka 客户端本身并且正确。因此我们不再需要担心缓慢的侦听器 - 现在一切都在消费者的线程上运行。

消费者线程轮询 KafkaConsumer 消息并将它们交给调用您的侦听器的侦听器线程。

KafkaConsumer 的早期版本需要这样做,因为缓慢的侦听器可能会导致分区重新平衡 - 心跳必须在消费者线程上发送。

他们现在已经在 KafkaConsumer 中解决了这个问题(心跳在后台发送)所以在 2.0 中我们将只有一种线程类型并且在消费者线程上调用侦听器。 2.0.0.M2(里程碑 2)现已可用;计划在下个月底左右发布。