关于go-micro中使用consul的一些注意细节

今天因为配置go-micro中使用consul作为服务发现踩了一天的坑,最后终于成功解决

1.安装go-micro(windows)

# 安装go-micro
go get -u -v github.com/micro/go-micro

# 安装工具集
go get -u -v github.com/micro/micro

# 安装protobuf插件
go get -u -v github.com/golang/protobuf/{proto,protoc-gen-go}
go get -u -v github.com/micro/protoc-gen-micro

2.创建micro服务

因为最新版本的go-micro已经弃用了consul,默认使用etcd做服务注册,所以我们需要额外引入consul

micro new --type srv mserver -- 创建一个微服务项目

protoc --proto_path=. --go_out=. --micro_out=. proto/mserver/mserver.proto  -- 编译proto文件


## ps如果找不到consul的话就用以下路径
	github.com/micro/go-plugins/registry/consul

3.搭建好的go-micro服务的main.go文件

package main

import (
	"github.com/micro/go-micro/util/log"
	"github.com/micro/go-micro"
	"mserver/handler"
	"mserver/subscriber"
	"github.com/micro/go-plugins/registry/consul"
	mserver "mserver/proto/mserver"
)

func main() {
	// 初始化服务发现
	consulReg := consul.NewRegistry()

	// New Service
	service := micro.NewService(
		micro.Name("go.micro.srv.mserver"),
		micro.Registry(consulReg),
		micro.Version("latest"),
	)

	// Initialise service
	service.Init()

	// Register Handler
	mserver.RegisterMserverHandler(service.Server(), new(handler.Mserver))

	// Register Struct as Subscriber
	micro.RegisterSubscriber("go.micro.srv.mserver", service.Server(), new(subscriber.Mserver))

	// Register Function as Subscriber
	micro.RegisterSubscriber("go.micro.srv.mserver", service.Server(), subscriber.Handler)

	// Run service
	if err := service.Run(); err != nil {
		log.Fatal(err)
	}
}

上一篇:Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用


下一篇:9. Consul