kafka生產者實例配置參數

KafkaProducer中有三個參數是必填的:

bootstrap.servers: 指定生產者客戶端連接kafka集羣所需的broker地址列表,格式爲host1:port1,host2:port2,可以設置一個或多個。這裏並非需要所有的broker地址,因爲生產者會從給定的broker裏尋找其它的broker。

key.serializer和value.serializer:broker接收消息必須以字節數組byte[]形式存在,KafkaProducer<K,V>和ProducerRecord<K,V>中的泛型就是key和value的類型。key.serializer和value.serializer分別用來指定key和value序列化操作的序列化器,無默認值。類的全限定名。

非必填參數

client.id:這個參數用來設定kafkaProducer對應的客戶端id,默認值爲“”,如果不設置,會自動生成一個非空字符串,內容形式如:“producer-1”,“producer-2”…

retries:配置生產者重試次數,對於可重試異常,那麼只要在規定的次數內自行恢復了,就不會拋出異常,默認是0。

retry.backoff.ms用來設定兩次重試之間的時間間隔,默認值100。

partitioner.class:顯示配置使用哪個分區器。

interceptor.classes:指定自定義攔截器,多個傳List集合。

buffer.memory:生產者客戶端RecordAccumulator緩存大小,默認值爲33554432B,即32M。

batch.size:ProducerBatch可以複用內存區域的大小

max.block.ms:最大阻塞時間,RecordAccumulator緩存不足時或者沒有可用的元數據時,KafkaProducer的send()方法調用要麼被阻塞,要麼拋出異常,此參數的默認值爲60000,即60s。

metadata.max.age.ms:當客戶端超過這個時間間隔時就會更新元數據信息默認值300000,即5分鐘。元數據指集羣中有哪些主題,主題有哪些分區,每個分區leader副本在哪個節點上,follower副本在哪個節點上,哪些副本在AR,ISR等集合中,集羣中有哪些節點等等。

acks:用來指定必須要多少個副本收到這條消息,之後生產者纔會認爲這條消息成功寫入。acks是生產者客戶端中一個非常重要的參數,它涉及消息的可靠性和吞吐量之間的權衡。acks參數有三種類型的值:字符串類型,不是整型。

​ 1:只要分區的leader副本寫入成功,生產者就會收到來自服務端的成功響應。如果再被其它follower副本拉取前leader副本崩潰,那麼此時消息還是會丟失。

​ 0:生產者發送消息之後不需要等待任何服務端的響應。如果在消息發送到寫入kafka的過程中出現了某些異常,導致kafka並沒有收到這條消息,那麼生產者也無從得知,消息會丟失。

​ -1或者all:生產者發送消息之後,需要等待ISR中所有副本成功寫入消息之後才能收到來自服務端的成功響應。

max.request.size:用來限制生產者客戶端能發送的消息的最大值,默認值爲1048576B,即1MB。這個參數涉及到其它參數的聯動,比如broker端的message.max.bytes參數。對kafka沒有足夠把控的時候不要更改此參數。

compression.type:指定消息的壓縮方式,默認值爲"none",可以配置爲"gzip",“snappy”和“lz4”。

connections.max.idle.ms:用來指定多久之後關閉閒置的連接,默認值540000(ms),即9min

linger.ms:生產者發送ProducerBatch之前等待更多消息(ProducerRecoder)加入ProducerBatch的時間,默認值爲0。生產者客戶端會在ProducerBatch被填滿或者等待時間超過linger.ms時發送出去。增大這個參數的值會增加消息的延遲,但同時會提高吞吐量。

receive.buffer.bytes:用來設置socket接收緩衝區的大小,默認值爲32768(B),即32KB,如果設置爲-1,則使用操作系統的默認值。

send.buffer.bytes:用來設置socket發送緩衝區的大小,默認值爲131072(B),即128KB,如果設置爲-1,則使用操作系統默認值。

request.timeout.ms:配置Producer等待請求響應的最長時間,默認值爲30000(ms),請求超時之後可以進行重試。注意這個參數需要比broker端參數replica.lag.time.max.ms的值要大,這樣可以減少因客戶端重試而引起的消息重複的概率。

enable.idempotence:是否開啓冪等性功能,默認值false

max.in.flight.requests.per.connection:限制每個連接,也就是客戶端與Node之間的連接最多緩存請求數,默認值5

transactional.id:設置事物id,必須唯一,默認值null

實時內容請關注微信公衆號,公衆號與博客同時更新:程序員星星
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章