我使用带有多线程特性的SpringKafka(concurrentkafkalistenercontainerfactory),发现了两种类型的线程名:1#0-1-kafka-consumer-12#0-1-Kafka-3那我怎么理解这两种线呢?他们之间是什么关系?提前谢谢!
cclgggtu1#
在以前的Kafka版本中(< 0.10.1 )听得慢是一种痛苦。非活动消费线程被视为死线程,因此发生了重新平衡。这就是为什么我们引入线程免提,并将侦听器中处理的记录传递给单独的线程。所以,这些线程前缀正是关于这一点。最新版本 2.0 ,基于Kafka 0.10.2 我们已经删除了这个逻辑,因为现在心跳发生在kafka客户机本身,并且正确。因此,我们不必再担心监听器速度慢了——现在一切都在消费者的线程上运行。
0.10.1
2.0
0.10.2
xyhw6mcr2#
使用者线程轮询 KafkaConsumer 并将它们交给调用侦听器的侦听器线程。早期版本的 KafkaConsumer 因为一个缓慢的监听器可能会导致分区重新平衡——心跳必须在使用者线程上发送。他们现在已经把这个问题解决了 KafkaConsumer (心跳是在后台发送的)因此在2.0中,我们只有一种线程类型,侦听器在使用者线程上被调用。2.0.0.m2(里程碑2)现在可用;该版本计划在下个月底左右发布。
KafkaConsumer
2条答案
按热度按时间cclgggtu1#
在以前的Kafka版本中(<
0.10.1
)听得慢是一种痛苦。非活动消费线程被视为死线程,因此发生了重新平衡。这就是为什么我们引入线程免提,并将侦听器中处理的记录传递给单独的线程。所以,这些线程前缀正是关于这一点。最新版本
2.0
,基于Kafka0.10.2
我们已经删除了这个逻辑,因为现在心跳发生在kafka客户机本身,并且正确。因此,我们不必再担心监听器速度慢了——现在一切都在消费者的线程上运行。xyhw6mcr2#
使用者线程轮询
KafkaConsumer
并将它们交给调用侦听器的侦听器线程。早期版本的
KafkaConsumer
因为一个缓慢的监听器可能会导致分区重新平衡——心跳必须在使用者线程上发送。他们现在已经把这个问题解决了
KafkaConsumer
(心跳是在后台发送的)因此在2.0中,我们只有一种线程类型,侦听器在使用者线程上被调用。2.0.0.m2(里程碑2)现在可用;该版本计划在下个月底左右发布。