dubbogo-1 基础rpc服务

基本环境处理

https://cn.dubbo.apache.org/zh-cn/overview/quickstart/go/install/

在这里插入图片描述

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

执行

 go get -u github.com/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 main

import (
	"context"
)

import (
	"dubbo.apache.org/dubbo-go/v3/common/logger"
	"dubbo.apache.org/dubbo-go/v3/config"
	_ "dubbo.apache.org/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 main

import (
	"context"
)

import (
	"dubbo.apache.org/dubbo-go/v3/common/logger"
	"dubbo.apache.org/dubbo-go/v3/config"
	_ "dubbo.apache.org/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)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

singkingcho

有帮助?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值