这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天 本次笔记将一步一步的记录Kitex的使用
Kitex
Kitex不支持Windows系统!Kitex不支持Windows系统!Kitex不支持Windows系统!
安装centos虚拟机
我使用的是VMware workstations虚拟机平台,在该平台上使用linux系统的centos进行kitex的快速入门
虚拟机安装教程:www.bilibili.com/video/BV1WY…
从p8看到p12即可
然后在centos安装go的环境,安装idea等操作自行百度
安装代码生成工具
- 首先,要确定你的gopath
-
其次在gopath下安装kitex和thrift
go install github.com/cloudwego/tool/cmd/kitex@latest go install github.com/cloudwego/thriftgo@latest
-
配置环境变量
export PATH=$GOPATH/bin:$PATH
然后重启 然后重启 然后重启
重启后,输入 kitex --version thriftgo --version 查看是否安装成功
从git扒demo
在gopath下创建如下文件夹,在cloudwego中打开终端,从git获得项目
git clone https://github.com/cloudwego/kitex-examples.git
若没有git,可直接访问改url,通过浏览器下载代码
运行示例代码
若go.mod爆红,我的解决方案是在idea里面的go模块下设置
GOPROXY=https://goproxy.cn,direct
(cn可换成io)
在hello目录下打开两个终端,分别运行 go run . go run ./client,出现下图所示即成功
增加新方法
关闭上面两个终端 更改hello/hello.thriftgo中的代码
namespace go api
struct Request {
1: string message
}
struct Response {
1: string message
}
service Hello {
Response echo(1: Request req)
}
//上面是原来的
//下面是更改后的
namespace go api
struct Request {
1: string message
}
struct Response {
1: string message
}
struct AddRequest {
1: i64 first
2: i64 second
}
struct AddResponse {
1: i64 sum
}
service Hello {
Response echo(1: Request req)
AddResponse add(1: AddRequest req)
}
更改后在hello下打开终端并输入命令
kitex -module github.com/cloudwego/kitex-examples -service a.b.c hello.thrift
其中github.com/cloudwego/kitex-examples是go.mod的名称
在./handler.go查看是否有add方法存在用以验证以上命令是否起效
然后将add更改为如下代码
// Add implements the HelloImpl interface.
func (s *HelloImpl) Add(ctx context.Context, req *api.AddRequest) (resp *api.AddResponse, err error) {
// TODO: Your code here...
resp = &api.AddResponse{Sum: req.First + req.Second}
return
}
在 ./client/main.go 中的for 循环更改为如下
for {
req := &api.Request{Message: "my request"}
resp, err := client.Echo(context.Background(), req)
if err != nil {
log.Fatal(err)
}
log.Println(resp)
time.Sleep(time.Second)
addReq := &api.AddRequest{First: 512, Second: 512}
addResp, err := client.Add(context.Background(), addReq)
if err != nil {
log.Fatal(err)
}
log.Println(addResp)
time.Sleep(time.Second)
}
最后重新运行一次:在hello目录下打开两个终端,分别运行 go run . go run ./client
会得到如下返回
多了一个我们添加的add客户端答复