go-micro 微服務實戰(二)

我們來實現api網關代理後端的rpc服務。

首先,編寫一個proto文件,定義接口:

創建目錄proto/user,編寫user.proto內容如下:

syntax="proto3";
package user;
service User{
rpc Get(Request) returns (Reponse){}
}
message Request{
}
message Reponse{
Uinfo user=1;
}
message Uinfo{
 string id =1;
 string name =2;
}

然後生成對應的golang文件:

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

接下來,編寫main.go,內容如下:

package main
import (
	"context"
	"fmt"
	pb "demo2/proto/user"
	"github.com/micro/go-micro"
	"github.com/micro/go-micro/registry/consul"
)
type User struct {
}
func (u *User) Get(ctx context.Context, req *pb.Request, res *pb.Reponse) error {
	fmt.Println("received user/get request")
	user := &pb.Uinfo{
		Id: "1",
		Name: "test",
	}
	res.User = user
	return nil
}
func main() {
	reg := consul.NewRegistry()
	srv := micro.NewService(
		micro.Name("anakin.sun.api.user"),
		micro.Registry(reg),
	)
	srv.Init()
	pb.RegisterUserHandler(srv.Server(), new(User))
	err := srv.Run()
	if err != nil {
		fmt.Println(err)
	}
}

注意,這裡採用的是go mod的包管理方式組織的文件

好的,準備好了,運行這個文件:

go run main.go

啟動api gateway:

micro --registry=consul api --handler=api --namespace=anakin.sun.api

現在可以訪問了,用postman訪問試試看:

GET localhost:8080/user/get


分享到:


相關文章: