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

2022-05-05  本文已影响0人  笑着字太黑

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

上一篇下一篇

猜你喜欢

热点阅读