现象:apache
kafka producer一开始写入正常,慢慢的会大量超时异常,偶尔正常写入;在callback函数打印异常信息为函数
org.apache.kafka.common.errors.TimeoutException: Expiring 2 record(s) for testTopic-0 due to 64534 ms has passed since batch creation plus linger time
缘由:code
producer send方法的callback函数执行缓慢致使;kafka
producer往broker发送数据时是串行的,只有上次batch所有写入broker,而且所有callback函数执行完毕后,才会继续下一次发送。若是上一次发送所有callback函数执行时间超过了request.timeout.ms(30s),就会致使后续batch的message发送时间大于建立时间30s以上,而后被producer丢弃并抛出异常;io
方法:test
1.加大request.timeout.ms值;sed
2.调整callback,使得batch的callback执行时间在request.timeout.ms以内;request