sisterofdc

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

首先构造注册的结构体

type MyServer struct {
	Address string
	Port    int
	Name    string
	ID      string
	Tag     []string
}

第一步拿到consul的客户端

func ConsulServerSet() (consulClient consul.Client) {
	var consulConfig = api.DefaultConfig()
	consulConfig.Address = ""
	var client, errOne = api.NewClient(consulConfig)
	if errOne != nil {
		fmt.Println(errOne)
		panic(errOne)
	}
	consulClient = consul.NewClient(client)
	return consulClient
}

注册,两个部分,检查和信息注册

重点技术agentServiceCheck
HTTP TCP UDP GRPC 填写服务对应的地址

func Register(consulClient consul.Client, myServer MyServer) error {
	var agentServiceCheck = new(api.AgentServiceCheck)
	agentServiceCheck.DeregisterCriticalServiceAfter = "30s"
	agentServiceCheck.Interval = "10s"
	agentServiceCheck.GRPC = ""

	var agentServiceRegistration = new(api.AgentServiceRegistration)
	agentServiceRegistration.ID = myServer.ID
	agentServiceRegistration.Address = myServer.Address
	agentServiceRegistration.Port = myServer.Port
	agentServiceRegistration.Name = myServer.Name
	agentServiceRegistration.Check = agentServiceCheck
	agentServiceRegistration.Tags = myServer.Tag

	err := consulClient.Register(agentServiceRegistration)
	if err != nil {
		return err
	} else {
		return nil
	}
}

注销 将自己的服务注销就行了。一般是最后关闭服务的时候

func DeRegister(consulClient consul.Client, myServer MyServer) bool {
	var agentServiceRegistration = new(api.AgentServiceRegistration)
	agentServiceRegistration.ID = myServer.ID
	agentServiceRegistration.Address = myServer.Address
	agentServiceRegistration.Port = myServer.Port
	agentServiceRegistration.Name = myServer.Name
	err := consulClient.Deregister(agentServiceRegistration)
	if err != nil {
		return false
	} else {
		return true
	}
}
posted on 2023-02-27 20:27  SistersOfDC  阅读(17)  评论(0编辑  收藏  举报