Spring Cloud Stream Kafka Binder:未指定分区键时默认分区策略?
Spring Cloud Stream 未指定分区键时的分区选择策略
当你配置了partitioned: true和partition-count: 4但没指定partition-key-expression时,Spring Cloud Stream会默认采用轮询(Round-Robin)策略来分配消息分区,具体机制是:
- 生产者内部会维护一个自增计数器,从0开始,每发一条消息计数器就+1
- 用当前计数器的值对
partition-count(也就是你配置的4)取模,计算结果就是消息要发送到的分区索引 - 举个例子:第1条消息计数器为0,0%4=0 → 发往分区0;第2条计数器1→1%4=1→分区1;第3条计数器2→分区2;第4条计数器3→分区3;第5条计数器4→4%4=0→回到分区0,以此循环往复
这种轮询逻辑会均匀把消息分散到你配置的所有4个分区里,这就是你能观察到消息发布至全部4个分区的原因。刚好适配你“无需关注消费者顺序、消息发至多个分区”的场景,能平衡各个分区的负载。
内容的提问来源于stack exchange,提问作者Funsaized
相关产品推荐
相关产品推荐

