【kafka】生产者投递消息特征(异步发送)

PoppyEvan 2020-08-01

kafka的生产者producer由持有未提交给kafka服务的记录的缓冲区构成一个缓冲区池,于此同时会有一个后台I/O线程来负责将这些记录record转化为请求request,然后将其提交给集群。

如果发送完数据之后不对producer进行资源释放close,会导致资源被挤占。

producer的send方法是异步的,当调用send方法提交一条记录到缓冲区之后,立即被返回。这样就能够允许生产者进行高效组织以批处理来发送数据。

producer.send(‘数据’)——>producer缓冲区(producer立即返回,继续添加数据)———>缓冲区满或者到时间了———>后台I/O线程将缓冲区的数据发送到kafka集群。

相关推荐