簡體   English   中英

具有默認分區的Kafka生產者

[英]Kafka producer with default partitioning

現在,我的kafka生產者正在將所有消息下沉到kafka主題的單個分區中,該分區實際上有多個分區。

我如何創建將使用默認分區程序的生產者,並在主題的不同分區之間分配消息。

我的kafka制作人的代碼段:

Properties props = new Properties();
props.put(ProducerConfig.RETRIES_CONFIG, 0);
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,bootstrap.servers);
props.put(ProducerConfig.ACKS_CONFIG, "all");

我正在使用flink kafka生產者下沉關於kafka主題的消息。

speStream.addSink(
    new FlinkKafkaProducer011(kafkaTopicName,
    new KeyedSerializationSchemaWrapper<>(new SimpleStringSchema()), 
    props, 
    FlinkKafkaProducer011.Semantic.EXACTLY_ONCE)

使用默認分區程序,將使用以下邏輯為消息分配一個分區:

  • 密鑰消息:生成密鑰的哈希值,並根據該哈希值選擇分區。 這意味着具有相同密鑰的消息將最終位於同一分區上

  • 未加密的消息:輪詢用於分配分區

一種解釋您所看到的行為的選項是,如果您對所有消息使用相同的密鑰,那么使用默認分區程序,它們將最終位於同一分區上。

通過將flinkproducer更改為

speStream.addSink(新的FlinkKafkaProducer011(kafkaTopicName,新的SimpleStringSchema(),props));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM