使用spring kafka模板,我有2个不同的生产者,它们总是以相同的形式向主题发送具有相同密钥的不同消息:
生产者1:发送密钥:1条消息:abc分区0
生产者2:发送密钥:2条消息:def
我有3个分区,所有消息都根据消息密钥发送到同一分区。
现在,我需要确保根据某些属性,特定消息将进入特定分区,以便能够管理系统中的某些优先级。
生产者2是东西,无法知道生产者1选择了哪个分区。
Kafka确保来自不同生产者的消息使用相同的密钥发送到相同的分区。但是,当从生产者1分配分区时,生产者2将具有相同密钥的消息发送到另一个分区。
我已经看到了有关此信息,但是生产者没有选择要使用的分区。
即使生产者选择了它将使用的分区,kafka也不应该继续为消息分配相同的分区吗?
答案 0 :(得分:1)
本文的答案可能有助于您了解所面临的问题。 offset of partition 0 is very close to be the sum of offset from rest partitions 本质上
/ ** *默认分区策略: * *
如果在记录中指定了分区,请使用它 * 如果未指定分区但存在键,则根据键的哈希值选择一个分区 * 如果不存在分区或密钥,则以循环方式选择一个分区 * /