Kafka producer 發送過程

在客戶端調用send方法時,須要先構造好ProducerRecord對象,其包含如下字段html

  • 若是在發送時指定了partition,則消息將被保存到指定的tp分區隊列,
  • 若是沒有指定分區,將對key散列後來計算分區,相同key的消息將被寫到同一個分區隊列中,
  • 若是key是null,且使用默認的分區器,
    • 則分區器將用輪詢的方法(Round Robin)將序列化後的消息均衡分佈到不一樣的隊列中
  • sender線程從Accumulator中取出批量數據組成一個batch發送

若是想使用同步方式併發

  • 實際上是經過異步方式間接實現
    • 由於異步方式返回的是一個future對象,
    • 在這對象上調用get方法,將被阻塞直到返回結果。

下圖詳細描述了數據發送到accumulator及sender線程從accumulator取出併發送到broker的過程異步

 

https://www.cnblogs.com/benfly/p/10000034.html線程

相關文章
相關標籤/搜索