[英]Get the partition number of a record before producing in Kafka
我需要知道 Kafka 記錄所在的 Kafka 主題的分區號。
執行前
producer.send(record);
有沒有辦法知道該記錄去哪個分區?
AFAIK 不可能使用默認的循環分區器。 如果您指定一個鍵,您可以從 Producer 源代碼中獲取默認算法並嘗試預測(它是一種hash(key) % num.partitions
)如果您使用自定義分區器,則您處理它並且已經知道。 我想知道 ProducerInterceptor 但它在分配分區之前提供信息,正如您從文檔中看到的那樣。
https://kafka.apache.org/26/javadoc/org/apache/kafka/clients/producer/ProducerInterceptor.html
我在這里看到三個選項:
AdminClient
API 獲取有關特定主題的分區數量的信息,然后重新應用 Kafka 使用的默認分區器邏輯:kafka.common.utils.Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.