作者回复: 有可能是要加载的日志段数据太多导致的,可以增加num.recovery.threads.per.data.dir的值
作者回复: 可以考虑单个进程下再开多线程的方式来增强消费能力,不必一味考虑多进程的方案
作者回复: PHP客户端的设计方式不太了解。如果是Java Consumer API的话,你不需要指定分区,只需要要消费的topic就行。如果位移管理恰当的话,通常不会发生大面积的消息重新消费。
作者回复: 应该这么说,心跳线程会定期地检查前端线程是否卡住了,一旦发现卡住了,便会发起主动离组。
作者回复: 消费者会自动重连的,如果重连失败,说明网络有问题
作者回复: 持续消费一部分消息缓存到本地,http接口从本地读取消息。如果长时间不拉取,consumer先pause消费
作者回复: “谁负责分配线程给每个partition呀” --- leader consumer负责分配。
会均匀分配的,这是kafka consumer代码保证的
作者回复: 1. 您指哪段代码?另外如果设置了enable.auto.commit=true或没有显式设置enable.auto.commit=false,就是自动提交
2. wakeup主要用于唤醒polling中的consumer实例。如果你使用了多线程(即把KafkaConsumer实例用于单独的线程),你需要有能力在另一个线程中“中断”KafkaConsumer所在实例的执行。wakeup就是用这个的