關於kafka傳送訊息過大導致的異常的解決方式

2021-10-06 15:06:47 字數 670 閱讀 1106

在kafka傳送訊息的時候,如果訊息過大超過了max.request.size的預設大小(1m),就會報下面的異常:

這個時候我們如果單獨調整max.request.size引數的大小可能不起作用,因為在broker端和consumer端同樣對訊息的大小存在限制,我們在調整的時候要同時調整這三個引數,不然可能是broker接受不了producter端的訊息,要不就是consumer端消費不了訊息。調整如下:

producer端:

max.request.size=5242880(5m)

broker:

message.max.bytes=6291456(6m)

consumer:

fetch.max.bytes=7340032(7m)

max.request.size < message.max.bytes < fetch.max.bytes

還有乙個地方就是topic端同樣也有乙個max.message.bytes引數,它只針對某個主題生效,可動態配置,可覆蓋全域性的 message.max.bytes,好處就是可以針對不同主題去設定 broker 接收訊息的大小,而且不用重啟 broker。

Kafka 訊息傳送

建立乙個kafkaprodecer物件,傳入上面建立的properties物件 kafkaproducerproducer new kafkaproducer mykafkaprops 使用prodecerrecord string topic,string key,string value 建構函...

kafka訊息傳送模式

在kafka 0.8.2之後,producer不再區分同步 sync 和非同步方式 async 所有的請求以非同步方式傳送,這樣提公升了客戶端效率。producer請求會返回乙個應答物件,包括偏移量或者錯誤信。這種非同步方地批量的傳送訊息到kafka broker節點,因而可以減少server端資源...

Kafka 傳送訊息流程

客戶端的幾個元件 一條訊息首先需要確定要被儲存到那個 partition 對應的雙端佇列上 其次,儲存訊息的雙端佇列是以批的維度儲存的,即 n 條訊息組成一批,一批訊息最多儲存 n 條,超過後則新建乙個組來儲存新訊息 其次,新來的訊息總是從左側寫入,即越靠左側的訊息產生的時間越晚 最後,只有當一批訊...