56个版本 (14个稳定版)
1.4.3 | 2023年6月9日 |
---|---|
1.4.2 | 2021年2月15日 |
1.4.1 | 2020年12月20日 |
1.4.0 | 2019年11月21日 |
0.8.0 | 2017年7月28日 |
在编码类别中排名736
每月下载77次
35KB
722 行
pq
protobuf到json反序列化器,用Rust编写
pq
是一个工具,它可以将一组预编译的 .fdset
文件给定的 protobuf 消息反序列化。它可以理解 varint/leb128-delimited/i32be 流,并且可以连接到 Kafka。
pq
在输出到 tty 时会进行美化打印,但您应该将其管道传递给 jq
以获得更全面的 json 处理。
下载
pq 在 crates.io 上:cargo install pq
。您也可以从版本页面下载静态二进制文件。
用法
新功能 您现在可以使用 protoc
在线编译 proto 文件
$ pq --protofile ./tests/protos/dog.proto --msgtype com.example.dog.Dog <./tests/samples/dog
{
"breed": "gsd",
"age": 3,
"temperament": "excited"
}
使用 PROTOC 和 PROTOC_INCLUDE 来控制执行的 protoc 二进制文件并配置 -I=/proto/path
参数(从 prost 复制设计)。
要设置,请将您的 *.fdset
文件放在 ~/.pq
、/etc/pq
或使用 FDSET_PATH
环境变量指定的不同目录中
$ protoc -o dog.fdset dog.proto
$ protoc -o person.fdset person.proto
$ cp *.fdset ~/.pq/
您可以通过选项指定额外的 fdset 目录或文件
$ pq --msgtype com.example.dog.Dog --fdsetdir ./tests/fdsets <./tests/samples/dog
$ pq --msgtype com.example.dog.Dog --fdsetfile ./tests/fdsets/dog.fdset <./tests/samples/dog
管道传递单个编译好的 protobuf 消息
$ pq --msgtype com.example.dog.Dog <./tests/samples/dog
{
"age": 4,
"breed": "poodle",
"temperament": "excited"
}
传递 varint 或 leb128 分隔的流
$ pq --msgtype com.example.dog.Dog --stream varint <./tests/samples/dog_stream
{
"age": 10,
"breed": "gsd",
"temperament": "aggressive"
}
从 Kafka 流中消费
$ pq kafka my_topic --brokers 192.168.0.1:9092 --beginning --count 1 --msgtype com.example.dog.Dog
{
"age": 10,
"breed": "gsd",
"temperament": "aggressive"
}
将 Kafka 流转换为 varint 分隔
$ pq kafka my_topic --brokers=192.168.0.1:9092 --count 1 --convert varint |\
> pq --msgtype com.example.dog.Dog --stream varint
{
"age": 10,
"breed": "gsd",
"temperament": "aggressive"
}
将 kafkacat
输出传递给它
$ kafkacat -b 192.168.0.1:9092 -C -u -q -f "%R%s" -t my_topic |\
> pq --msgtype=com.example.dog.Dog --stream i32be
{
"age": 10,
"breed": "gsd",
"temperament": "aggressive"
}
不使用 Kafka 编译
要编译不带 Kafka 支持的 pq
,请运行
$ cargo build --no-default-features
为 Windows 编译
- 安装 Visual Studio Installer 社区版
- 运行安装程序并安装
Visual Studio Build Tools 2019
。您需要C++ Build Tools
工作负载。请注意,您不能仅安装最小包,还需要MSVC C++ x64/86 Build Tools
和Windows 10 SDK
。 - 从开始菜单打开
x64 Native Tools Command Prompt
。 - 下载并运行
rustup-init.exe
- 关闭并重新打开您的终端(这样
cargo
将在您的路径中) - 运行
cargo install --no-default-features pq
请注意,这将禁用 Kafka 功能,该功能目前在 Windows 上不受支持。
依赖关系
~8–13MB
~271K SLoC