首先构造注册的结构体
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
}
}