源码剖析-异步发送模式
# 4.19 Kafka源码剖析之异步发送模式
异步发送消息
在发送消息的时候设置回调函数:
调用KafkaProducer的send方法,该方法接收要发送的消息批,同时接收回调对象:
doSend的实现:
累加器append的实现:
tryAppend的实现:
tryAppend的实现:
Sender的run方法调用:
sendProducerData的实现:
sendProducerRequests的实现:
sendProduceRequest的实现:
上述方法如果得到broker的响应,就回调 handleProduceResponse 方法:
该方法对响应的处理:
completeBatch的实现:
completeBatch的实现:
batch的done方法:
触发回调函数的执行:
上图中执行用户设置的callback函数的onCompletion方法:
由于上述方法都是在Sender线程中调用,因此回调的onCompletion方法的执行也是异步的,跟用户的producer.send方法不在同一个线程。
回调的异步执行即是生产的异步发送模式。
上次更新: 2023/08/10, 16:25:16