生產(chǎn)者代碼:

(1)?send()方法是異步的,添加消息到緩沖區(qū)等待發(fā)送,并立即返回。生產(chǎn)者將單個(gè)的消息批量在一起發(fā)送來(lái)提高效率。
(2)ack是判別請(qǐng)求是否為完整的條件(就是是判斷是不是成功發(fā)送了)。我們指定了“all”將會(huì)阻塞消息,這種設(shè)置性能最低,但是是最可靠的
(3)retries,如果請(qǐng)求失敗,生產(chǎn)者會(huì)自動(dòng)重試,我們指定是0次,如果啟用重試,則會(huì)有重復(fù)消息的可能性
(4)producer(生產(chǎn)者)緩存每個(gè)分區(qū)未發(fā)送消息。緩存的大小是通過(guò)batch.size配置指定的。值較大的話將會(huì)產(chǎn)生更大的批。并需要更多的內(nèi)存(因?yàn)槊總€(gè)“活躍”的分區(qū)都有1個(gè)緩沖區(qū))
(5)buffer.memory控制生產(chǎn)者可用的緩存總量,如果消息發(fā)送速度比其傳輸?shù)椒?wù)器的快,將會(huì)耗盡這個(gè)緩存空間。當(dāng)緩存空間耗盡,其他發(fā)送調(diào)用將被阻塞,阻塞時(shí)間的閾值通過(guò)max.block.ms設(shè)定,之后它將拋出一個(gè)TimeoutException
(6)key.serializer和value.serializer示例,將用戶提供的key和value對(duì)象ProducerRecord轉(zhuǎn)換成字節(jié),你可以使用附帶的ByteArraySerializaer或StringSerializer處理簡(jiǎn)單的string或byte類型。


