大多数资料都说不指定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
















暂无评论内容