赞
踩
接着前一篇对KafkaProducer的分析,本文分析以下流程图的步骤5。
概述:在原有的ProducerBatch中尝试追加消息,如果尝试两次都失败,会创建新的ProducerBatch,进行第三次尝试追加消息。而追加消息,实际上,是将消息有关属性写入到数据输出流中。对于原有批次已满或者创建了新的批次的情况,会唤醒Sender线程,做后续处理。
RecordAccumulator主要用来缓存消息,以便Sender线程可以批量发送,进而减少网络传输的资源消耗以提升性能。
该缓存的大小可以通过buffer.memory配置,默认32MB。如果生产者发送消息的速度超过了消息发送到服务器的速度,则容易造成缓存空间不足,此时,KafkaProducer#send()要么阻塞,要么抛出异常,取决于max.b
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。