1.ProducerRecord
如果 key 不為 null,那么默認的分區器會對 key 進?哈希(采? MurmurHash2 算法,具備 ?運算性能及低碰撞率),最終根據得到的哈希值來計算分區號,擁有相同 key 的消息會被寫?同?個分區。如果 key 為 null,那么消息將會以輪詢的?式發往主題內的各個可?分區。
注意:如果 key 不為 null,那么計算得到的分區號會是所有分區中的任意?個;如果 key 為 null 并且有可?分區時,那么計算得到的分區號僅為可?分區中的任意?個,注意兩者之間的差 別。
2.消息發送到broker
有可能需要經過攔截器(Interceptor)、序列化器(Serializer)和分區器(Partitioner)的?系列作?之后才能被真正地發往 broker。
生產者攔截器,實現ProducerInterceptor接口:
onSend() :在消息發送之前執行
onAcknowledgement():在消息被應答之前或消息發送失敗,優于callback執行。
攔截鏈:按配置先后執行
更多關于大數據培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養模式,擁有國內一體化教學管理及學員服務,助力更多學員實現高薪夢想。