亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go protobuf 中單獨消息和服務定義的最佳實踐?

Go protobuf 中單獨消息和服務定義的最佳實踐?

Go
慕勒3428872 2022-08-01 17:12:49
分離(特定于 Go 的)協議緩沖區中服務中使用的消息聲明的最佳做法是什么?上下文是具有多個 gRPC 服務的大型應用程序。某些消息在多個服務中使用。我們的想法是劃分消息和服務的定義,就像這樣(簡化一點):airline/pb/airline_messages.proto:syntax = "proto3";option go_package = "github.com/example.com/example-repo/airline/pb";message Airline {    string code = 1;    string name = 2;    string country = 3;}airline/pb/airline_services.proto:syntax = "proto3";option go_package = "github.com/example.com/example-repo/airline/pb";import "airline/pb/airline_messages.proto"service AirlineService {    rpc GetAirline(string) returns (Airline) {}    rpc GetAirlines(GetAirlinesRequest) returns (repeated Airline) {}}message GetAirlinesRequest {    int max = 1;    string country = 2;    string pattern = 3;    string sortby = 4;}我這樣打電話:protocprotoc --go_out=. \   --go_opt=paths=source_relative \   --go-grpc_out=. \   --go-grpc_opt=paths=source_relative \   --proto_path=. \   --proto_path=../../ airline_services.proto這不起作用,因為未定義。像這樣調用它:Airlineprotoc ... airline_services.proto airline_messages.proto生成一條錯誤消息,即航空公司被乘以定義。這樣做:protoc ... airline_messages.protoprotoc ... airline_services.proto只是覆蓋了Go文件,相當于編譯。airline_services.proto能夠在多個服務中重用消息定義的最佳實踐是什么?
查看完整描述

1 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

不確定它是否有幫助,或者您是否正在使用不同版本的Go生成器。


我在一個目錄中有多個*.proto文件。其中一些導入其他:


部分導入:device.protostatus.proto


syntax = "proto3";


package somePackage;


import "status.proto";


option go_package = "goPackageName";


service Device {

    rpc GetStatus (GetStatusRequest) returns (Status) {}

}


message GetStatusRequest {

    // ...

}

包含消息:status.protoStatus


syntax = "proto3";


package somePackage;


option go_package = "goPackageName";


message Status {

    int32 customer = 1;

    string device_id = 2;

    // ...

}


我用以下命令生成 Go 代碼:


protoc --go_out=plugins=grpc:. --go_opt=paths=source_relative *.proto

注意:我仍然使用舊的Go protobuf。github.com/golang/protobuf


查看完整回答
反對 回復 2022-08-01
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號