策略一: 如果傳送訊息的時候,沒有指定key, 輪詢達到負載均衡
//策略二:這個地方就是指定了key, hash取模,相同的key打到同乙個分割槽上
int partition =
partition
(record, serializedkey, serializedvalue, cluster);-
>
return partition != null ?
partition :
//使用分割槽器進行選擇合適的分割槽
partitioner.
partition
( record.
topic()
, record.
key(
), serializedkey, record.
value()
, serializedvalue, cluster);==
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
public
intpartition
(string topic, object key,
byte
keybytes, object value,
byte
valuebytes, cluster cluster)
else
}else
}
kafka producer 異常處理
sender.completebatch if error errors.none canretry batch,error on topic partition retrying attempts left error correlationid,batch.topicpartition,this...
kafka producer寫詳細過程
1 2 客戶端寫入引數。batch.size 通過這個引數來設定批量提交的資料大小,預設是16k,當積壓的訊息達到這個值的時候就會統一傳送 發往同一分割槽的訊息 linger.ms 這個設定是為傳送設定一定是延遲來收集更多的訊息,預設大小是0ms 就是有訊息就立即傳送 滿足上述任意一條件即傳送訊息。...
三 Kafka Producer傳送訊息及分割槽策略
1 producer 實現 ps 不建議使用自定義序列化和反序列化,他們會把生產者和消費者耦合在一起,且容易出錯 同步傳送訊息 非同步傳送訊息 public class kafkaproducerdemo public static void main string args asyncsendme...