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