首页 文章

Kafka制作人使用默认分区

提问于
浏览
0

现在我的kafka 生产环境 者正在将所有消息下沉到kafka主题的单个分区,该分区实际上有超过1个分区 .

如何创建将使用默认分区程序并在主题的不同分区之间分发消息的 生产环境 者 .

我的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)

2 回答

  • 0

    使用默认分区程序,使用以下逻辑为消息分配一个分区:

    • 键控消息:生成密钥的散列,并基于该分区被选中 . 这意味着具有相同密钥的消息将最终出现在同一分区上

    • unkeyed messages:循环法用于分配分区

    解释您看到的行为的一个选项是,如果您对所有邮件使用相同的密钥,那么使用默认分区程序它们将最终位于同一分区上 .

  • 0

    通过将flinkproducer改为来解决这个问题

    speStream.addSink(new FlinkKafkaProducer011(kafkaTopicName,new SimpleStringSchema(),props));

相关问题