Kafka 的 Producer 發送消息采用的是異步發送的方式。在消息發送的過程中,涉及到了 兩個線程——main 線程和 Sender 線程,以及一個線程共享變量——RecordAccumulator。 main 線程將消息發送給 RecordAccumulator,Sender 線程不斷從 RecordAccumulator 中拉取 消息發送到 Kafka broker。
發送數據先經常攔截器、序列化器、分區器(默認輪詢分區)。
batch.size:只有數據積累到 batch.size 之后,sender 才會發送數據。
linger.ms:如果數據遲遲未達到 batch.size,sender 等待 linger.time 之后就會發送數據。