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.key和key.separator属性。
默认情况下,生产者不关心写入消息的主题分区,并将在主题的所有分区上公平地平衡消息。生产者根据记录\xe2\x80\x99s 键的哈希值选择分区,如果记录没有键,则以循环方式选择分区。
\nKafka使用key来指定目标分区。默认
策略是根据键的哈希值选择分区,或者在键为空时使用循环算法。
Kafka 使用键值对,如果未指定键,则默认为 null,分区将被识别为循环方式。
\n如果我们指定 key,则具有相同 key 的消息/记录将进入同一分区
\n要从命令行发送完整的键值对,我们需要使用以下两个属性:
\n特性
\nparse.key : 如果 it\xe2\x80\x99s true \xe2\x80\x93 key 是必需的,默认情况下 it\xe2\x80\x99s 设置为\nfalse。
\nkey.separator :如下
\n例子:
\nKafka控制台生产者命令
\nkafka-console-producer --broker-list MY-KAFKA:29092 --topic kafka-prod --property parse.key=true --property key.separator=,\nRun Code Online (Sandbox Code Playgroud)\n参考:https://shashirl9.medium.com/kafka- Producer -internals-d971ac582688
\n| 归档时间: |
|
| 查看次数: |
16057 次 |
| 最近记录: |