我看解释是说ack=-1表示所有ISR都接收成功才能认为producer成功。你说ack=-1只是leader确认接收到消息会返回响应,那么和ack=1的区别是什么?
首先LEO是消费者看不到的,ack=-1只是leader确认接收到消息会返回响应,但是replica还是会同步数据,所以leader的LEO和HW不一样(除非你没有replica)。HW是可以通过jmx监控指标看到的,指标名:kafka.log:type=Log,name=LogEndOffset,topic=xxxxx,partition=10,这个指标名看起来是LEO但是实际上是HW。jmx还有一个指标kafka.server:type=FetcherLagMetrics,name=ConsumerLag,clientId=ReplicaFetcherThread-0-19,topic=xxxxxx,partition=29 这个可以看到每个分区的一个追赶lag
1、包含多个
2、如果调大socket,注意jvm也要跟着增加,防止内存溢出。
kafka间隔一段时间接受消息?没有吧,只能是在客户端控制输入,调小batch的消息数量,或增加kafka节点,分解压力。