使用管理 API 将 Protobuf 消息发布到 Pulsar 模式注册表时出现 500 错误

Posted

技术标签:

【中文标题】使用管理 API 将 Protobuf 消息发布到 Pulsar 模式注册表时出现 500 错误【英文标题】:Get 500 error on posting Protobuf message to Pulsar schema registry using admin API 【发布时间】:2021-11-01 21:59:56 【问题描述】:

我正在尝试使用管理员API 将 Protobuf 消息发布到 Pulsar 模式注册表。但我总是收到 500 错误。我想知道这种行为的原因可能是什么。请指教。

网址:

http://localhost:8080/admin/v2/schemas/public/new_ns/new_top/schema

有效载荷:

    
       "type": "PROTOBUF", 
       "schema": "syntax = \"proto3\";\n\npackage com.mycorp.mynamespace;\n\nimport 'google/protobuf/any.proto';\n \nmessage SampleRecord  \n\n  int32 my_field1 = 1; \n  double my_field2 = 2; \n  string my_field3 = 3; \n", 
       "properties": 
    

格式化消息定义:

    syntax = "proto3";
    
    package com.mycorp.mynamespace;
    
    import 'google/protobuf/any.proto';
     
    message SampleRecord  
      int32 my_field1 = 1; 
      double my_field2 = 2; 
      string my_field3 = 3; 
    

【问题讨论】:

【参考方案1】:

我对 Pulsar 完全不熟悉,但谷歌搜索建议,您应该考虑使用 ComplexType 中的 "schema": "ProtobufNativeSchema" 并且 value 是一个描述符,即

protoc \
--include_imports \
--include_source_info \
--proto_path=. \
--descriptor_set_out=sample_record.pb \
./sample_record.proto

【讨论】:

以上是关于使用管理 API 将 Protobuf 消息发布到 Pulsar 模式注册表时出现 500 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 java 反射自动将值从 java bean 复制到 protobuf 消息对象?

在 Java 中读取 protobuf 消息时出现异常

流式传输 protoBuf 消息的设计模式

Kafka Connect:如何使用 hdfs sink 连接器将 Kafka 主题的 protobuf 数据发送到 HDFS?

Protobuf字符串到可读字符串?

C ++ Protobuf到/从JSON转换[关闭]