卡夫卡多个生产者到特定的相同分区

时间:2019-05-17 23:23:41

标签: apache-kafka kafka-producer-api spring-kafka

使用spring kafka模板,我有2个不同的生产者,它们总是以相同的形式向主题发送具有相同密钥的不同消息:

生产者1:发送密钥:1条消息:abc分区0

生产者2:发送密钥:2条消息:def

我有3个分区,所有消息都根据消息密钥发送到同一分区。

现在,我需要确保根据某些属性,特定消息将进入特定分区,以便能够管理系统中的某些优先级。

生产者2是东西,无法知道生产者1选择了哪个分区。

Kafka确保来自不同生产者的消息使用相同的密钥发送到相同的分区。但是,当从生产者1分配分区时,生产者2将具有相同密钥的消息发送到另一个分区。

我已经看到了有关此信息,但是生产者没有选择要使用的分区。

即使生产者选择了它将使用的分区,kafka也不应该继续为消息分配相同的分区吗?

1 个答案:

答案 0 :(得分:1)

本文的答案可能有助于您了解所面临的问题。 offset of partition 0 is very close to be the sum of offset from rest partitions 本质上

  

/ **        *默认分区策略:        *        *

  • 如果在记录中指定了分区,请使用它        *
  • 如果未指定分区但存在键,则根据键的哈希值选择一个分区        *
  • 如果不存在分区或密钥,则以循环方式选择一个分区        * /