在go的微服务架构中,使用go-kit组件进行开发微服务
type Reg struct {
Host string
Port int
Client consul.Client
}
func MakeReg (host string , port int) (*Reg , error) {
reg := api.DefaultConfig()
reg.Address = host + ":" + strconv.Itoa(port)
apiclient , err = api.NewClient(reg)
if err != nil {
return nil , err
}
client := consul.NewClient(apiclient)
return &Reg{Host : host , Port : port ,Client : client} , nil
}
func (r Reg) Resiter (servicename , tag , host , seviceid ,checkinter ,healthcheckhttp ,deregisterafter string , port int) bool {
congig := api.AgentServiceRegistration{
Port : port ,
Address : host ,
Name := servicename,
ID := serviceid,
Ckeck : &api.AgentServiceCheck{
Interval : checkinter,
HTTP : "http://" + host + ":" + healthcheckhttp ,
DeregisterCriticalServiceAfter : deregisterafter,
}
}
if err := r.Client.Register(&config) ; err != nil {
fmt.Println(err)
return false
}
return true
}
func (r Reg) Deregister (serviceid string) bool {
dreg := api.AgentServiceRegistration{ID : serviceid}
if err != r.Client.Deregister(&config) ; err != nil {
fmt.Println(err)
return false
}
return true
}
func (r Reg) discover (servicename , tag string ,passingonly bool) ( []*api.ServiceEntry ,error ) {
if entries ,_ ,err := r.Client.Service(servicename , tag , passingonly , nil) ;err != nil {
return nil ,err
}else{
return entries , nil
}
}