协议缓冲区架构无效。导入“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 的协议缓冲区 - 协议消息标签的线路类型无效

为啥我无法从包 com.google.protobuf.util 导入 JsonFormat?

协议缓冲区,让 C# 与 C++ 对话:类型问题和架构问题

您如何管理协议缓冲区定义文件?

协议缓冲区和 OO 设计

针对 iOS 的 Unity3D 中的协议缓冲区