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



我有一个用例,我需要使用 Kafka 控制台生产者发送键值消息。那么如何通过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 使用该键指定目标分区。默认
    策略是根据键的哈希值选择分区或使用 如果键为 null,则循环算法。

  2. Kafka 使用键值对,如果未指定键,它将被视为默认值为 null,分区将标识为循环方式。

  3. 如果我们指定键,则具有相同键的消息/记录将转到同一分区

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

  5. 性能

  • parse.key :如果为 true – key 是必需的,默认情况下设置为 假。

  • 键分隔符:如下

例子:

  • 键分隔符=,
  • 键分隔符=-
  • 键分隔符=:

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

最新更新