0008.不指定partition的时候信息被发到了同一个partition

大多数资料都说不指定partition的时候信息会按照roundrobin策略发送,也就是会先算出一个partition发送,然后依次++发送。

但是实际测试结果信息被发到了同一个partition,这是由于kafka-client的默认策略并不是roundrobin,而是Sticky Partitioner.

解决办法是可以在生成生产者时的属性中设定:

Map<String, Object> producerProps = kafkaProperties.buildProducerProperties();
producerProps.put(ProducerConfig.PARTITIONER_CLASS_CONFIG, RoundRobinPartitioner.class);

roundrobin轮询的partition数量与消费者数有关。
列如一个Topic有10个Partition,消费者数有5个,这样生产者发送的roundrobin结果是会向5个partition中发送消息而不是10个

Apache Kafka Producer Improvements: Sticky Partitioner (confluent.io)

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容