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)