This repository has been deprecated, move to protoc-gen-go-triple
The protoc-gen-go-triple tool generates Go language bindings for Dubbo services based on protobuf definition files.
For users of dubbo-go version 3.2.0 and above, please use protoc-gen-go-triple version 3.0.0 or higher. It is also recommended for other dubbo-go users to use protoc-gen-go-triple version 3.0.0 or higher. To generate stubs compatible with dubbo-go version 3.1.x and below, please set the following option:
protoc --go-triple_out=useOldVersion=true[,other options...]:.
Before using protoc-gen-go-triple, make sure you have the following prerequisites installed on your system:
- Go (version 1.17 or higher)
- Protocol Buffers (version 3.0 or higher)
To install protoc-gen-go-triple, you can use the go get command:
go install github.com/dubbogo/protoc-gen-go-triple/[email protected]Alternatively, you can download the binary release or clone the GitHub repository and build the binary manually:
git clone https://github.com/dubbogo/protoc-gen-go-triple.git
cd protoc-gen-go-triple
go buildMake sure to add the resulting binary to your system's PATH.
To generate Triple code from your Protocol Buffer files, use the protoc compiler with the protoc-gen-go-triple plugin. Here's an example command:
protoc --go_out=. --go_opt=paths=source_relative --go-triple_out=. your_file.protoBoth the --go_out flag and --go-triple_out flag should be set to .. Please set the generated file path in the proto file using the go_package option.
Let's say you have a Protocol Buffer file named greet.proto, and you want to generate Triple Go code from it.
syntax = "proto3";
package greet;
option go_package = "dubbo.apache.org/dubbo-go/v3/protocol/triple/internal/proto/dubbo3_gen;greet";
message GreetRequest {
string name = 1;
}
message GreetResponse {
string greeting = 1;
}
service GreetService {
rpc Greet(GreetRequest) returns (GreetResponse) {}
}The package determines the interface path exposed by the Triple service after it is started, which would be:
http://127.0.0.1:20000/greet.GreetService/Greet
The go_package option determines the file generation path and package name
Both parts are indispensable. The directory for the file is determined before ;, and the package to be generated is determined after ;.
Resulting in the following directory structure:
dubbo-go/protocol/triple/internal/proto/
|-triple_gen
greet.pb.go
greet.triple.go
The package for greet.pb.go and greet.triple.go are greet
You can use the following command to generate the Go code:
protoc --go_out=. --go_opt=paths=source_relative --go-triple_out=. greet.protoThis will generate the Go code for the Protobuf code in greet.pb.go and the Triple code in greet.triple.go.