micro-创建第一个服务

2021-04-04  本文已影响0人  n_xy

首先要确认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"
}
上一篇下一篇

猜你喜欢

热点阅读