【发布时间】:2019-07-07 13:31:46
【问题描述】:
我想以这样的嵌套方式定义我的消息:
FooRequest
- messageId
- correlationId
- 更多字段
- payload(包含 Foo 有效负载的专用 proto)
并在我的 grpc 服务定义中使用请求,如下所示:
service SessionManager {
rpc CreateSession (CreateSessionRequest) returns (CreateSessionResponse) {}
rpc DropSession (DropSessionRequest) returns (DropSessionResponse) {}
}
为此,最好只定义一次 Request 原型并将其重新用于我想要创建的所有请求。
message Request {
string messageId = 1;
string origin = 2;
string correlationId = 3;
int32 sentAt = 4;
string type = 5;
int32 version = 6;
google.protobuf.Any metadata = 7;
google.protobuf.Any payload = 8;
}
不要这样做:
message CreateSessionRequest {
string messageId = 1;
string origin = 2;
string correlationId = 3;
int32 sentAt = 4;
string type = 5;
int32 version = 6;
google.protobuf.Any metadata = 7;
CreateSessionPayload payload = 8;
}
message DropSessionRequest {
string messageId = 1;
string origin = 2;
string correlationId = 3;
int32 sentAt = 4;
string type = 5;
int32 version = 6;
google.protobuf.Any metadata = 7;
DropSessionPayload payload = 8;
}
这有可能吗?
【问题讨论】:
标签: protocol-buffers grpc