美文网首页
micro-创建第一个服务

micro-创建第一个服务

作者: n_xy | 来源:发表于2021-04-04 22:28 被阅读0次

    首先要确认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"
    }
    

    相关文章

      网友评论

          本文标题:micro-创建第一个服务

          本文链接:https://www.haomeiwen.com/subject/kzqrkltx.html