kafkacat调试

kakfka是一项非常强大的技术。它可以提供令人难以置信的吞吐量,并且已经成为后端服务之间通信的标准方式。

唯一真正的负面影响是,深入了解kakfa的底层可能会有些痛苦。当然,Kafka附带了一些脚本来管理和查看主题的细节,但有时它们感觉有点笨拙……它们也有能力创造和摧毁整个kafka,这很可怕,使用起来也很危险。

这时使用kafkacat来调试就能规避这些问题。

使用kafkacat获取主题列表

与Kafka一起工作的第一个障碍就是一开始就知道哪些主题是可用的。这对于kafkacat来说是超级简单的。

kafkacat -L -b kafka

就这些。参数是-L表示列表模式,-b表示kafka的broker。您将获得集群中每个主题的列表。它看起来是这样的:

使用kafkacat发布消息

这绝对是我在使用kafkacat时最常见的任务。我写了一个消费者消费数据,但数据并不存在。我依赖于另一个应用程序来提供我的数据,但我不想运行那个应用程序只是为了测试我自己的。别担心,kafakcat会有帮助的。在你选择的终端机上运行以下程序:

kafkacat -P -b kafka -t awesome-topic

-P将kafkacat设置为producer模式,-b指向一个名为Kafka的Kafka代理,-t指向一个主题。现在您正在发布消息!不要被你发出的命令下面的光标所迷惑…只要在终端上输入(或粘贴)你的信息,然后回车。清洗和重复的方法。完成后,只需按ctrl +C并将其作为消息发送。你的终端应该是这样的:

使用kafkacat消费消息

假设你有一个应用程序,它发布了一条消息,但没有使用相同的消息。你要确保所有东西都准确地落在你期望的地方。您需要使用一个主题,以确保一切正常。

幸运的是,使用kafkacat处理消息非常简单。在你的终端输入以下命令:

kafkacat -C -b kafka -t awesome-topic

从字面上看,基本发布者和基本消费者之间的惟一区别是-C选项。这告诉kafkacat使用消息。显然,作为一个消费者,你不能提供任何输入,但你会看到一大堆有趣的输出。在本例中,您将看到我们在第一个示例中发布的消息。

默认情况下,kafkacat会告诉你它什么时候到达一个分区的末尾。我已经将Kafka配置为使用10个分区(0-9个)创建主题,因此我们可以在消息中看到很多额外的信息。如果我们不关心分区/偏移量信息,我们可以使用-q选项只显示消息。

在主题或集群之间传输消息

假设您想要将一些消息从一个主题移动到另一个主题,而不需要在consumer和publisher窗口之间复制/粘贴它们。用kafkacat做是一件很简单的事。

kafkacat -C -b kafka -t awesome-topic -e | kafkacat -P -b kafka -t awesome-topic2

有两个由|分隔的命令。我们的第一个命令是一个基本的kafkacat使用者,它针对的是awesome-topic主题。-e标志对我们来说是新的,但它的意思是“当你讲到主题的结尾时就结束了”。第二个命令只从stdin读取并将消息发布到awesome-topic2。

我们可以从文件中读取:

kafkacat -C -b kafka -t awesome-topic -e > awesome-messages.txt
cat awesome-messages.txt | kafkacat -P -b kafka -t awesome-topic2

你可以用kafkacat做很多事情。你可以指定一个消息键用于分区策略…-J标志非常棒(只要把它放在你想要的任何东西的末端,然后开始把东西输送到jq)…你可以加入或创建消费者组…

可能性几乎是无限的。kafkacat是一个非常有用的工具,所以要充分利用它!

2020年5月关系型数据库DB-Engines排行榜
supervisor如何启动一个应用的多个实例