我有一个用例,我需要使用 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.key
和key.separator
属性。
默认情况下,生产者不关心写入消息的主题分区,并将在主题的所有分区上公平地平衡消息。生成者根据记录键的哈希值选择分区,如果记录没有键,则以轮循机制方式选择分区。
-
Kafka 使用该键指定目标分区。默认
策略是根据键的哈希值选择分区或使用 如果键为 null,则循环算法。 -
Kafka 使用键值对,如果未指定键,它将被视为默认值为 null,分区将标识为循环方式。
-
如果我们指定键,则具有相同键的消息/记录将转到同一分区
-
要启用从命令行发送完整的键值对,我们需要使用两个属性,如下所示:
-
性能
-
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