在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 條,超過後則新建乙個組來儲存新訊息 其次,新來的訊息總是從左側寫入,即越靠左側的訊息產生的時間越晚 最後,只有當一批訊...