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

Kes*_*dhi 19 apache-kafka kafka-consumer-api kafka-producer-api

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

Kes*_*dhi 42

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

kafka-console-producer 命令

kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name --property "parse.key=true" --property "key.separator=:"
Run Code Online (Sandbox Code Playgroud)

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

例如

key1:value1
key2:value2
key3:value3
Run Code Online (Sandbox Code Playgroud)

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

emp_info: {"emp_id":100,"first_name":"Keshav","last_name":"Lodhi","designation":"DataEngineer"}
Run Code Online (Sandbox Code Playgroud)

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

  • 如果您只想发送一条消息,请从包含该一条消息的文件中发送它。语法 kafka-console- Producer.sh --broker-list localhost:9092 --topic topic-name --property "parse.key =true" --property "key.separator=:" < filePathAndName (3认同)

sha*_*asr 9

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

\n
    \n
  1. Kafka使用key来指定目标分区。默认
    策略是根据键的哈希值选择分区,或者在键为空时使用循环算法。

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

    \n
  4. \n
  5. 如果我们指定 key,则具有相同 key 的消息/记录将进入同一分区

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

    \n
  8. \n
  9. 特性

    \n
  10. \n
\n
    \n
  • parse.key : 如果 it\xe2\x80\x99s true \xe2\x80\x93 key 是必需的,默认情况下 it\xe2\x80\x99s 设置为\nfalse。

    \n
  • \n
  • key.separator :如下

    \n
  • \n
\n

例子:

\n
    \n
  • 键.分隔符=,
  • \n
  • key.separator=-
  • \n
  • 键.分隔符=:
  • \n
\n

Kafka控制台生产者命令

\n
kafka-console-producer --broker-list MY-KAFKA:29092 --topic kafka-prod --property parse.key=true --property key.separator=,\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n