3.服务注册与发现-go操作consul(HTTP服务的注册与发现)
作者:互联网
package main
import (
"fmt"
"github.com/hashicorp/consul/api"
)
func Register(address string, port int, name string, tags []string, id string) error {
cfg := api.DefaultConfig()
cfg.Address = "192.168.0.103:8500" //consul服务器的IP地址与端口
client, err := api.NewClient(cfg)
if err != nil {
panic(err)
}
//生成对应的检查对象
check := &api.AgentServiceCheck{
HTTP: "http://192.168.1.102:8021/health",//检查服务的IP地址
Timeout: "5s",
Interval: "5s",
DeregisterCriticalServiceAfter: "10s",
}
//生成注册对象
registration := new(api.AgentServiceRegistration)
registration.Name = name
registration.ID = id
registration.Port = port
registration.Tags = tags
registration.Address = address
registration.Check = check
err = client.Agent().ServiceRegister(registration)
//client.Agent().ServiceDeregister()
if err != nil {
panic(err)
}
return nil
}
func AllServices() {
cfg := api.DefaultConfig()
cfg.Address = "192.168.1.103:8500"
client, err := api.NewClient(cfg)
if err != nil {
panic(err)
}
data, err := client.Agent().Services()
if err != nil {
panic(err)
}
for key, _ := range data {
fmt.Println(key)
}
}
func FilterSerivice() {
cfg := api.DefaultConfig()
cfg.Address = "192.168.1.103:8500"
client, err := api.NewClient(cfg)
if err != nil {
panic(err)
}
data, err := client.Agent().ServicesWithFilter(`Service == "user-web"`)
if err != nil {
panic(err)
}
for key, _ := range data {
fmt.Println(key)
}
}
func main() {
//_ = Register("192.168.1.102", 8021, "user-web", []string{"mxshop", "bobby"}, "user-web")
//AllServices()
//FilterSerivice()
fmt.Println(fmt.Sprintf(`Service == "%s"`, "user-srv"))
}
标签:HTTP,nil,err,cfg,consul,client,api,注册,registration 来源: https://blog.csdn.net/apple_56973763/article/details/121709951