kafka maven没有下载_Kafka 系列(三)——Kafka 生产者详解
生活随笔
收集整理的這篇文章主要介紹了
kafka maven没有下载_Kafka 系列(三)——Kafka 生产者详解
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
首先介紹一下 Kafka 生產(chǎn)者發(fā)送消息的過(guò)程:
- Kafka 會(huì)將發(fā)送消息包裝為 ProducerRecord 對(duì)象, ProducerRecord 對(duì)象包含了目標(biāo)主題和要發(fā)送的內(nèi)容,同時(shí)還可以指定鍵和分區(qū)。在發(fā)送 ProducerRecord 對(duì)象前,生產(chǎn)者會(huì)先把鍵和值對(duì)象序列化成字節(jié)數(shù)組,這樣它們才能夠在網(wǎng)絡(luò)上傳輸。
- 接下來(lái),數(shù)據(jù)被傳給分區(qū)器。如果之前已經(jīng)在 ProducerRecord 對(duì)象里指定了分區(qū),那么分區(qū)器就不會(huì)再做任何事情。如果沒(méi)有指定分區(qū) ,那么分區(qū)器會(huì)根據(jù) ProducerRecord 對(duì)象的鍵來(lái)選擇一個(gè)分區(qū),緊接著,這條記錄被添加到一個(gè)記錄批次里,這個(gè)批次里的所有消息會(huì)被發(fā)送到相同的主題和分區(qū)上。有一個(gè)獨(dú)立的線(xiàn)程負(fù)責(zé)把這些記錄批次發(fā)送到相應(yīng)的 broker 上。
- 服務(wù)器在收到這些消息時(shí)會(huì)返回一個(gè)響應(yīng)。如果消息成功寫(xiě)入 Kafka,就返回一個(gè) RecordMetaData 對(duì)象,它包含了主題和分區(qū)信息,以及記錄在分區(qū)里的偏移量。如果寫(xiě)入失敗,則會(huì)返回一個(gè)錯(cuò)誤。生產(chǎn)者在收到錯(cuò)誤之后會(huì)嘗試重新發(fā)送消息,如果達(dá)到指定的重試次數(shù)后還沒(méi)有成功,則直接拋出異常,不再重試。
二、創(chuàng)建生產(chǎn)者
2.1 項(xiàng)目依賴(lài)
本項(xiàng)目采用 Maven 構(gòu)建,想要調(diào)用 Kafka 生產(chǎn)者 API,需要導(dǎo)入 kafka-clients 依賴(lài),如下:
org.apache.kafka kafka-clients 2.2.0復(fù)制代碼2.2 創(chuàng)建生產(chǎn)者
創(chuàng)建 Kafka 生產(chǎn)者時(shí),以下三個(gè)屬性是必須指定的:
- bootstrap.servers :指定 broker 的地址清單,清單里不需要包含所有的 broker 地址,生產(chǎn)者會(huì)從給定的 broker 里查找 broker 的信息。不過(guò)建議至少要提供兩個(gè) broker 的信息作為容錯(cuò);
- key.serializer :指定鍵的序列化器;
- value.serializer :指定值的序列化器。
創(chuàng)建的示例代碼如下:
public class SimpleProducer { public static void main(String[] args) { String topicName = "Hello-Kafka"; Properties props = new Properties(); props.put("bootstrap.servers 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的kafka maven没有下载_Kafka 系列(三)——Kafka 生产者详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 华为读取版本exe_关于esrv_svc
- 下一篇: 绕固定轴分解_3轴 / 5轴 / 3+2