Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

go-micro入门实战(一) #1

Open
cheerego opened this issue Mar 28, 2019 · 0 comments
Open

go-micro入门实战(一) #1

cheerego opened this issue Mar 28, 2019 · 0 comments

Comments

@cheerego
Copy link
Owner

cheerego commented Mar 28, 2019

go-micro 入门实战第一篇

目录结构

├── client
│   └── client.go
├── go.mod
├── go.sum
├── main.go
└── proto
    ├── greeter.micro.go 生成文件
    ├── greeter.pb.go 生成文件
    └── greeter.proto 

安装

brew install consul
brew install protobuf

// 非项目目录执行
go get github.com/micro/protoc-gen-micro  
go get github.com/golang/protobuf/protoc-gen-go

greeter.proto

syntax = "proto3";

service Greeter {
    rpc Hello(HelloRequest) returns (HelloResponse) {}
}

message HelloRequest {
    string name = 1;
}

message HelloResponse {
    string greeting = 2;
}

gen

protoc --micro_out=. --go_out=. ./proto/greeter.proto

main.go

package main

import (
	"context"
	"fmt"
	"github.com/micro/go-micro"
	proto "watching/proto"
)

type Greeter struct{}

func (g *Greeter) Hello(ctx context.Context, req *proto.HelloRequest, rsp *proto.HelloResponse) error {
	rsp.Greeting = "Hello " + req.Name
	return nil
}

func main() {
	// Create a new service. Optionally include some options here.
	service := micro.NewService(
		micro.Name("greeter"),
	)

	// Init will parse the command line flags.
	service.Init()

	// Register handler
	proto.RegisterGreeterHandler(service.Server(), new(Greeter))

	// Run the server
	if err := service.Run(); err != nil {
		fmt.Println(err)
	}
}

go get

go get 

运行server

go run main.go

client/client.go

package main

import (
	"context"
	"fmt"
	"github.com/micro/go-micro"
	proto "watching/proto"
)


func main() {
	// Create a new service. Optionally include some options here.
	service := micro.NewService(micro.Name("greeter.client"))
	service.Init()

	// Create new greeter client
	greeter := proto.NewGreeterService("greeter", service.Client())

	// Call the greeter
	rsp, err := greeter.Hello(context.TODO(), &proto.HelloRequest{Name: "John"})
	if err != nil {
		fmt.Println(err)
	}

	// Print response
	fmt.Println(rsp.Greeting)
}

运行Client

go run client/client.go

micro cli

//非项目目录
go get github.com/micro/micro

➜  micro list services                  
greeter

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant