📜  kafkacat 接收消息 (1)

📅  最后修改于: 2023-12-03 14:43:38.256000             🧑  作者: Mango

kafkacat 接收消息

Kafkacat是一个快速而轻量的Kafka命令行工具,它使用librdkafka库提供高级Kafka客户端功能,例如消费者、生产者、主题元数据查看器以及分区查找器。在此文档中,我们将分享如何使用Kafkacat来接收Kafka消息。

安装 Kafkacat

您可以从以下链接中找到librdkafka和kafkacat的二进制文件。请注意,它们在Linux、macOS、FreeBSD和Windows上都受支持。

https://github.com/edenhill/kafkacat

您也可以通过Homebrew在macOS上进行安装:

brew install kafkacat
使用 Kafkacat 接收消息

使用以下命令来从Kafka主题中读取消息:

kafkacat -b <broker_hostname>:<broker_port> -C -t <topic_name>
  • -b: Kafka broker的主机名和端口。例如,localhost:9092
  • -C: 启用kafkacat消费模式。
  • -t: Kafka topic的名称。例如,my_topic

这将启动kafkacat,并从Kafka topic中读取数据。您会看到类似以下内容的输出信息:

% Reached end of topic my_topic [0] at offset 0
{"key": "value1"}
{"key": "value2"}

这里我们可以看到从主题“my_topic”中读取到的两个消息。

显示消息的偏移量

您也可以查看消息的偏移量。使用以下命令:

kafkacat -b <broker_hostname>:<broker_port> -C -t <topic_name> -o <offset_value>
  • -o: 从offset_value位置开始在主题上启动消费。

此命令将从Kafka topic的某个偏移量开始阅读消息。

您可以将offset_value设置为以下之一:

  • 整数: 将从指定的偏移量读取数据。
  • beginning: 从主题的开始位置读取数据。
  • end: 从主题的末尾位置读取数据。
  • stored: 从保存的消费者偏移量读取数据。
  • invalid: 如果未找到消费者偏移量,则从开始位置读取数据。

考虑以下示例:

kafkacat -b localhost:9092 -C -t my_topic -o beginning

这将从“my_topic”主题的开始位置读取所有消息。

显示消息的键值

默认情况下,kafkacat只会显示消息的所有内容。要查看消息的键值,请执行以下操作:

kafkacat -b <broker_hostname>:<broker_port> -C -t <topic_name> -f 'Topic %t[%p], offset %o, key %k: %s\n'
  • -f: 格式化输出。此处示例参数将消息格式化为“Topic my_topic[0], offset 1, key my_key: my_value”。

这将输出消息的键值,就像:

Topic my_topic[0], offset 1, key my_key: my_value
可靠消费

您可以使用-K选项在同一个会话中启用可靠消费。这允许您在协调器附近进行重新平衡时保持消费者组中的位置。如果没有使用该选项,则kafkacat将重复阅读消息。

kafkacat -b <broker_hostname>:<broker_port> -C -t <topic_name> -o <offset_value> -K
一次消费多个主题

可以使用以下命令来消费多个主题:

kafkacat -b <broker_hostname>:<broker_port> -C -t <topic1_name>,<topic2_name>,<topic3_name>

这将创建一个消费者并向三个主题提供数据。

总结

在本文中,我们已经了解了如何使用kafkacat接收Kafka消息。希望此文档对程序员有所帮助。

此文档参考了官方文档和网络资源。