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

Download history 14/week @ 2024-03-10 8/week @ 2024-03-17 4/week @ 2024-03-24 25/week @ 2024-03-31 1/week @ 2024-04-07 7/week @ 2024-04-21 4/week @ 2024-04-28 13/week @ 2024-05-19 6/week @ 2024-06-02 38/week @ 2024-06-09 24/week @ 2024-06-16 9/week @ 2024-06-23

每月下载77

MIT许可协议

35KB
722

pq 许可 Crates.io

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 编译

  1. 安装 Visual Studio Installer 社区版
  2. 运行安装程序并安装 Visual Studio Build Tools 2019。您需要 C++ Build Tools 工作负载。请注意,您不能仅安装最小包,还需要 MSVC C++ x64/86 Build ToolsWindows 10 SDK
  3. 从开始菜单打开 x64 Native Tools Command Prompt
  4. 下载并运行 rustup-init.exe
  5. 关闭并重新打开您的终端(这样 cargo 将在您的路径中)
  6. 运行 cargo install --no-default-features pq

请注意,这将禁用 Kafka 功能,该功能目前在 Windows 上不受支持。

依赖关系

~8–13MB
~271K SLoC