Here we demonstrate a case of obtaining the database version through gRPC.
1. Create a new proto
syntax = "proto3"; package pb; import "google/protobuf/"; service DataBase { rpc GetDataBaseVersion() returns(VersionResponse) {} } message VersionResponse { string version = 1; }
Compilation:
$ protoc --gogo_out=plugins=grpc:./
2. Create a new database connection
package model import ( "/driver/mysql" "/gorm" "log" ) type TpOrm struct { * } var TpDB TpOrm func InitTpOrm() { dsn := "root:root@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local" db, err := ((dsn), &{}) if err != nil { (err) return } TpDB = TpOrm{db} }
3. gRPC implements GetDataBaseVersion method
package impl import ( "context" "/golang/protobuf/ptypes/empty" "proj/model" pb "proj/proto" ) type DataBaseServerImpl struct { } func (dataBaseServerImpl *DataBaseServerImpl) GetDataBaseVersion(ctx , req *) (rep *, err error) { var version string rep = &{} rows, err := ("select version() as version").Rows() if err != nil { = "" } defer () for () { err := (&version) if err != nil { = "" }else{ = version } } return }
4. Server side implementation
package main import ( "/grpc" "log" "net" impl "proj/grpc" "proj/model" pb "proj/proto" ) func main() { () gRpcListen, err := ("tcp", ":23352") if err != nil { ("failed grpc listen: %v", err) } gRpcServer := () (gRpcServer, &{}) err = (gRpcListen) if err != nil { ("GrpcServer fail start :%v", ()) } else { ("GrpcServer success start %s", ":8090") } }
start up:
$ go run server/
5. Client implementation
package main import ( "context" "/grpc" "/protobuf/types/known/emptypb" "log" pb "proj/proto" ) func main() { ctx := () conn, err := (ctx, "127.0.0.1:23352", (), ()) if err != nil { (err) } client := (conn) in := new() rep, err := (ctx, in) if err != nil { (err) } else { () } }
start up:
$ go run client/
2023/06/28 17:30:37 5.5.28
6. Project structure
$ tree go-grpc/
go-grpc/
├── client
│ └──
├──
├──
├── grpc
│ └──
├── model
│ └──
├── proto
│ ├──
│ └──
├──
├── server
│ └──
└── test
└──
6 directories, 10 files
The above is the detailed content of using gRPC to obtain database version. For more information about gRPC to obtain database version, please follow my other related articles!