kcat protobuf 反序列化

问题描述 投票:0回答:2

我在本地工作时使用 kcat 检查 kafka 主题的内容,但是,当使用 protobuf 序列化消息时,我得到的结果是不可读的编码字符流。我知道存在其他一些 kafka 消费者工具(KafdropAKHQKowlKadek...),但我正在寻找适合我的需求的最简单的选项。

kcat 支持从 protofile 反序列化 protobuf 键/值吗?
有没有任何简单的基于终端的工具可以实现这一点?

apache-kafka protocol-buffers kcat
2个回答
4
投票

我很幸运地使用了这个命令:

kcat -C -t <topic> -b <kafkahost>:9092 -o -1 -e -q -D "" | protoc --decode=<full message class> path/to/my.proto --proto_path <proto_parent_folder>

更新 12/2023 - 这是一个更精简的命令,具有更好的指导。

kcat -C -t <topic> -b <kafkahost>:9092 -o -1 -e -q -D "" | protoc --decode <package>.<Message Type> my.proto

package
文件中定义的
.proto
在哪里,
<Message Type>
是消息的名称。

即:

user.proto

package some.package;

message User {
  string id = 1;
  string email = 2;
}

命令是:

kcat -C -t <topic_name> -b host.docker.internal:9092 -o -1 -e -q -D "" | protoc --decode some.package.User user.proto

1
投票

任何简单的基于终端的工具都可以实现这一点

仅与 Confluence Schema Registry 集成的工具(这些链接工具也使用这些工具),例如

kafka-protobuf-console-consumer
已经是 Confluence 平台的一部分。

关于

kcat
- 请参阅 https://github.com/edenhill/kcat/issues/72 和链接的问题

© www.soinside.com 2019 - 2024. All rights reserved.