我现在正在研究Kafka Java API。 在有关消费者的内容中,我经常看到ConsumerRecords。我想确切地知道键和值的含义。我已经阅读了官方文档,但是找不到答案。请分享你的智慧。
答案 0 :(得分:3)
您可以将Kafka主题中的每个记录视为键值对。默认情况下,该密钥用于将消息路由到该主题的特定分区。让我们举个例子。假设我们有一个主题cars
,其中包含4个分区。现在,我们将以下消息(K,V对)推送到该主题。
Kafka将为这些消息中的每条消息做的是计算分区的关键模数的哈希值。因此,消息1将转到hashCode(sedan) % 4
的分区号cars
。消息2将转到分区号。 hashCode(suv) % 4
,依此类推。如果您未指定任何密钥,即key为null,则Kafka会根据默认的分区策略(例如循环轮询)为消息分配一个分区。在这种情况下,消息将如下所示:
现在,消息1、2、3和4将分配给分区号。 0、1、2和3。如果您指定键,并且想用自己的键覆盖默认的分区策略,Kafka也允许您执行此操作。