[英]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.