社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
以命令行的方式创建一个微服务(使用默认的mdns服务发现),然后建立客户端调用微服务
终端输入
micro
这里需要提一下,micro如果不带参数,默认的服务发现使用的是mdns
这一步是确认服务发现正常,而且留意一下,这时候服务列表里没有helloworld
micro list services
huanglin@huanglindeMacBook-Pro src % micro new --type "srv" micro/rpc/helloworld
Creating service go.micro.srv.helloworld in /Users/huanglin/go/src/micro/rpc/helloworld
.
├── main.go
├── generate.go
├── plugin.go
├── handler
│ └── helloworld.go
├── subscriber
│ └── helloworld.go
├── proto/helloworld
│ └── helloworld.proto
├── Dockerfile
├── Makefile
└── README.md
download protobuf for micro:
brew install protobuf
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
go get -u github.com/micro/protoc-gen-micro
compile the proto file helloworld.proto:
cd /Users/huanglin/go/src/micro/rpc/helloworld
protoc --proto_path=.:$GOPATH/src --go_out=. --micro_out=. proto/helloworld/helloworld.proto
这个命令的意思是,在$GOPATH/src下的 micro/src文件夹下创建一个helloworld的微服务,输入之后会返回一堆内容,“翻译一下”,就是告诉我们,想启动一个微服务,还需要做下面几件事情
参考 3.2.1
参考3.2.1
选择main.go
点开确认下包是否缺少,红的代表是缺失的
这时候需要用go mod,添加依赖,这部分属于go mod 的范畴,解决报红的问题
解决之后,直接go run main.go启动
然后使用之前3.1.2的命令,micro list services,确认微服务是否能被发现,如图,已经有了一个helloworld的微服务
到这里一个helloworld微服务已经启动,但是服务总是需要客户端调用的
不然没什么意义
时间关系,直接贴代码
package main
import (
"context"
"fmt"
"github.com/micro/go-micro"
hello "micro/rpc/helloworld/proto/helloworld"
)
func main() {
// create a new service
service := micro.NewService()
// parse command line flags
service.Init()
// Use the generated client stub
cl:= hello.NewHelloworldService("go.micro.srv.helloworld",service.Client())
// Make request
rsp, err := cl.Call(context.Background(), &hello.Request{
Name: "John",
})
if err != nil {
fmt.Println(err)
return
}
fmt.Println(rsp.Msg)
}
执行的结果
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!