三 Kafka Producer傳送訊息及分割槽策略

2021-10-09 07:22:11 字數 752 閱讀 5541

1、producer**實現 

ps:不建議使用自定義序列化和反序列化,他們會把生產者和消費者耦合在一起,且容易出錯

// 同步傳送訊息、// 非同步傳送訊息

public class kafkaproducerdemo

public static void main(string args)

//asyncsendmessage();

}/**

* 非同步傳送訊息

**/private static void asyncsendmessage()

}});

system.out.println("分割槽:" + result.get().partition() + ", offset:" + result.get().offset());

} catch (exception e)

}/**

* 同步傳送訊息

**/private static void syncsendmessage(string content) catch (exception e)

}}

2、分割槽器

分割槽策略

雜湊策略(utils.topositive(utils.murmur2(keybytes)) % numpartitions)

黏性分割槽策略(org.apache.kafka.clients.producer.uniformstickypartitioner)

自定義策略

kafka producer 分割槽器

策略一 如果傳送訊息的時候,沒有指定key,輪詢達到負載均衡 策略二 這個地方就是指定了key,hash取模,相同的key打到同乙個分割槽上 int partition partition record,serializedkey,serializedvalue,cluster return par...

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 就是有訊息就立即傳送 滿足上述任意一條件即傳送訊息。...