首先要确认micro在启动状态。。。。。
新建一个服务
我打算搞一个回声服务,终端运行以下命令
micro new echo
Creating service echo
.
├── micro.mu
├── main.go
├── generate.go
├── handler
│ └── echo.go
├── proto
│ └── echo.proto
├── Dockerfile
├── Makefile
├── README.md
├── .gitignore
└── go.mod
download protoc zip packages (protoc-$VERSION-$PLATFORM.zip) and install:
visit https://github.com/protocolbuffers/protobuf/releases
download protobuf for micro:
go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
go get github.com/micro/micro/v3/cmd/protoc-gen-micro
compile the proto file echo.proto:
cd echo
make proto
修改模板
首先我声明下我操作系统是ubuntu16.04,64位。此处有个坑,那就是在echo.proto文件中,有这样一行
option go_package = "proto;echo";
就是这一行让我忙活了快一个小时,因为如果新建项目直接执行make proto的话,会报错,需要改成下面
option go_package = "./proto;echo";
这样我proto才编译成功,然后会在proto目录下生成两个文件,这两个文件里的内容就是待会写程序需要调用的。
但是先不要make ,修改一下echo.proto
service Echo {
rpc Call(Request) returns (Response) {}
}
message Request {
string msg = 1;
}
message Response {
string msg = 1;
}
然后在项目根目录执行make proto
,生成两个文件.
然后编写handler/echo.go
全删喽,然后留下
type Echo struct{}
// Call is a single request handler called via client.e genCall or therated client code
func (e *Echo) Call(ctx context.Context, req *echo.Request, rsp *echo.Response) error {
log.Info("Received Echo.Call request")
rsp.Msg = req.Msg
return nil
}
完了之后,在执行go mod tidy
,完事.
启动服务&访问
还是项目的根目录
执行micro run .
(记得有个....),之后也可以status命令查看下是否启动成功
之后就是访问了
micro echo call --msg=abc
返回
{
"msg": "a"
}