kafka原始碼 Kafka生產者原始碼分析

2021-10-11 13:47:31 字數 1827 閱讀 2578

我們kafka原始碼的doc文件拿下來乙個demo,這個demo用於向服務端傳送訊息,從這個例子我們可以知道傳送訊息是通過生產者的kafkaproducer來完成的,這一篇文章將先完成kafkaproducer的分析

properties props = new properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("acks", "all"); props.put("retries", 0); props.put("batch.size", 16384); props.put("linger.ms", 1); props.put("buffer.memory", 33554432); props.put("key.serializer", "org.apache.kafka.common.serialization.stringserializer"); props.put("value.serializer", "org.apache.kafka.common.serialization.stringserializer");  producer producer = new kafkaproducer<>(props); for(int i = 0; i < 100; i++)     producer.send(new producerrecord("my-topic", integer.tostring(i), integer.tostring(i)));  producer.close();
先看看kafkaproducer的初始化方法,可以看出kafkaproducer是通過一些鍵值對的配置來例項化的。

跟進去,下面這一段是metric,對於我們理解生產者影響不大,忽略掉

設定分割槽器和重試時間

設定序列化器

元資料

訊息大小、壓縮格式設定

累加器:

此類充當乙個佇列,將記錄累積到要傳送到伺服器的memoryrecords例項中。除非顯式禁用此行為,否則累加器使用有限的記憶體量,並且當該記憶體耗盡時,追加呼叫將阻塞。

初始化的過程,主要是設定了一些配置,然後初始化了一些重要的類。從初始化的過程,我們也知道生產環境需要修改一些配置來滿足生產的需求。

喜歡(❤ ω ❤)就加個關注唄!

Kafka生產者原始碼解析

1.生產者客戶端如何獲取要生產資料的topic元資料 2.生產者如何組裝訊息 3.生產者組裝好訊息後是直接傳送到broker端嗎?4.訊息是如何傳送到broker端的呢?5.生產者中,如果配置了訊息壓縮策略,同時服務端也配置了壓縮策略,並且兩個地方設定的策略不同,那採用哪個策略呢?6.如果多個客戶端...

kafka原始碼分析 kafkaconsumer

kafkaconsumer 對於多執行緒訪問是不安全的,通過使用acquire 跟release 方法來操作atomiclong currentthread字段 儲存當前訪問執行緒id 有多個執行緒同時訪問丟擲concurrentmodificationexception,來防止對個執行緒同時訪問。...

Kafka原始碼分析(一)

apache kafka 是 乙個分布式流處理平台.這到底意味著什麼呢?我們知道流處理平台有以下三種特性 它可以用於兩大類別的應用 為了理解kafka是如何做到以上所說的功能,從下面開始,我們將深入探索kafka的特性。首先是一些概念 kafka有四個核心的api 讓我們首先深入了解下kafka的核...