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