如何使用 kafka 控制台生产者发送键值消息

How to send key, value messages with the kafka console producer

我有一个用例,我需要使用 Kafka Console Producer 发送键值消息。那么如何通过Kafka Console Producer命令来实现呢?

经过一番研究,我找到了解决方案,解决方案就在这里。

kafka-console-producer 命令

kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name --property "parse.key=true" --property "key.separator=:"

在 运行 执行此命令后,您将进入生产者控制台,然后您可以从那里发送键值消息。

例如

key1:value1
key2:value2
key3:value3

为了更清楚起见,我在这里提供示例键值消息,emp_info 是一个键,JSON object 是一个值。

emp_info: {"emp_id":100,"first_name":"Keshav","last_name":"Lodhi","designation":"DataEngineer"}

注意: 简单地发送文本行将产生带有 null 键的消息。为了使用 keys and values 发送消息,您必须在 运行 生产者时在命令行上设置 parse.keykey.separator 属性。

默认情况下,生产者不关心消息写入的主题分区,并将在主题的所有分区上公平地平衡消息。生产者根据记录键的哈希值选择分区,如果记录没有键,则以循环方式选择分区。

  1. Kafka使用key指定目标分区。默认
    策略是根据键的散列选择分区或使用 如果密钥为空,则循环算法。

  2. Kafka使用键值对,如果没有指定键,默认为null,分区将被识别为循环方式。

  3. 如果我们指定键,messages/records具有相同的键进入相同的分区

  4. 要从命令行发送完整的键值对,我们需要使用以下两个属性:

  5. 属性

  • parse.key :如果为真 - 键是强制性的,默认设置为 假的。

  • key.separator : 如下

示例:

  • key.separator=,
  • key.separator=-
  • key.separator=:

Kafka 控制台生产者命令

kafka-console-producer --broker-list MY-KAFKA:29092 --topic kafka-prod --property parse.key=true --property key.separator=,

参考:https://shashirl9.medium.com/kafka-producer-internals-d971ac582688