协议缓冲区架构无效。导入“google/protobuf/any.proto”尚未加载:GCP/Pub-Sub
Posted
技术标签:
【中文标题】协议缓冲区架构无效。导入“google/protobuf/any.proto”尚未加载:GCP/Pub-Sub【英文标题】:Invalid Protocol Buffer schema. Import "google/protobuf/any.proto" has not been loaded: GCP/Pub-Sub 【发布时间】:2021-09-21 07:14:51 【问题描述】:我是 GCP 的新手。我正在尝试使用带有 protobuf 的架构定义的 Pub/Sub 服务。
架构:
syntax = "proto3";
import "google/protobuf/any.proto";
message Endorsement
string endorserId=1;
google.protobuf.Any data = 2;
string signature=3;
bool isVerified=4;
message TransactionPayload
string policyId =1;
string txnId =2;
repeated Endorsement endorsements=3;
此架构的验证失败并出现错误
协议缓冲区架构无效。导入“google/protobuf/any.proto”有 尚未加载。
我需要使用 google.protobuf.Any,还有其他方法可以使用/定义它吗?
【问题讨论】:
您如何验证这一点?您使用的是哪个 API? 我正在使用 GCP 控制台的功能来定义和验证架构,使用 GCP 门户(Web UI)添加屏幕截图以供参考。 【参考方案1】:目前,Pub/Sub 的架构支持不支持导入。您必须在消息类型的定义中自己定义消息类型。另请注意,当前模式支持仅允许定义单个消息顶部消息类型,因此您还必须将 Endorsement
定义嵌入到 TransactionPayload
定义中。
【讨论】:
哦,真难过。这迫使我转向不同的消息传递解决方案。感谢您的支持。您能否在答案中添加一些引用,指出目前 pub/sub 支持/不支持的内容? 事实证明文档中还没有提到这个限制。将确保将其添加到cloud.google.com/pubsub/docs/schemas。以上是关于协议缓冲区架构无效。导入“google/protobuf/any.proto”尚未加载:GCP/Pub-Sub的主要内容,如果未能解决你的问题,请参考以下文章
google 的从 c# 到 java 的协议缓冲区 - 协议消息标签的线路类型无效