dubbogo

编程入门 行业动态 更新时间:2024-10-09 23:14:16

dubbogo

dubbogo

文章目录

    • 基本环境处理
    • 编译pb接口
    • 开启rpc调用
    • 业务观察
    • qa1 能取出protoc里面的字段值吗?

基本环境处理

/

这里没有 protoc-gen-go --version

执行

 go get -u github/golang/protobuf/protoc-gen-go


进入到这个目录执行

go build
go install

这样就会出现在 go/bin 目录里面了,如果已经增加了这个环境变量了,就可以使用该命令了

分别验证

protoc --version

libprotoc 22.2

protoc-gen-go-triple --version

protoc-gen-go-triple 1.0.8

protoc-gen-go --version

protoc-gen-go: unknown argument “–version” (this program should be run by protoc, not directly)

这个错误先不管。

编译pb接口

protoc --go_out=. --go-triple_out=. ./samples_api.proto
  • –go_out=. 用到protoc-gen-go插件,生成文件到当前目录
  • –go-triple_out=. 使用 protoc-gen-go-triple插件,生成文件到当前目录

当然默认的样例工程其实已经包含了编译好的文件

开启rpc调用

回到项目根目录

go mod tidy

分别启动server端和client端

cd go-server/cmd
go run .
cd go-client/cmd
go run .

服务端效果

客户端效果

业务观察

这个的提供的样例模块

protoc的定义是

message HelloRequest {string name = 1;
}

翻译出来的go代码对应核心的地方就是这里

client代码增加注释

package mainimport ("context"
)import ("dubbo.apache/dubbo-go/v3/common/logger""dubbo.apache/dubbo-go/v3/config"_ "dubbo.apache/dubbo-go/v3/imports""helloworld/api"
)// 创建一个grpc的实例
var grpcGreeterImpl = new(api.GreeterClientImpl)// export DUBBO_GO_CONFIG_PATH= PATH_TO_SAMPLES/helloworld/go-client/conf/dubbogo.yaml
func main() {config.SetConsumerService(grpcGreeterImpl)if err := config.Load(); err != nil {panic(err)}logger.Info("start to test dubbo")// 传递参数req := &api.HelloRequest{Name: "laurence",}// grpc的调用reply, err := grpcGreeterImpl.SayHello(context.Background(), req)if err != nil {logger.Error(err)}logger.Infof("client response result: %v\n", reply) // reply是具体响应的信息
}

qa1 能取出protoc里面的字段值吗?

可以直接用reply.xxx 取值

package mainimport ("context"
)import ("dubbo.apache/dubbo-go/v3/common/logger""dubbo.apache/dubbo-go/v3/config"_ "dubbo.apache/dubbo-go/v3/imports""helloworld/api"
)// 创建一个grpc的实例
var grpcGreeterImpl = new(api.GreeterClientImpl)// export DUBBO_GO_CONFIG_PATH= PATH_TO_SAMPLES/helloworld/go-client/conf/dubbogo.yaml
func main() {config.SetConsumerService(grpcGreeterImpl)if err := config.Load(); err != nil {panic(err)}logger.Info("start to test dubbo")// 传递参数req := &api.HelloRequest{Name: "laurence",}// grpc的调用reply, err := grpcGreeterImpl.SayHello(context.Background(), req)if err != nil {logger.Error(err)}logger.Infof("client response result: %v\n", reply) // reply是具体响应的信息logger.Infof("Name is %v \n", reply.Name)logger.Infof("Age is %v \n", reply.Age)logger.Infof("Id is %v \n", reply.Id)
}

更多推荐

dubbogo

本文发布于:2023-12-06 10:41:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1667331.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:dubbogo

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!