1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package consul
- import (
- "fmt"
- "time"
- "github.com/hashicorp/consul/api"
- )
- type ConsulService struct {
- IP string
- Port int
- Tag []string
- Name string
- }
- func RegitserService(ca string, cs *ConsulService) {
- //register consul
- consulConfig := api.DefaultConfig()
- consulConfig.Address = ca
- client, err := api.NewClient(consulConfig)
- if err != nil {
- fmt.Printf("NewClient error\n%v", err)
- return
- }
- agent := client.Agent()
- interval := time.Duration(10) * time.Second
- deregister := time.Duration(1) * time.Minute
- reg := &api.AgentServiceRegistration{
- ID: fmt.Sprintf("%v-%v-%v", cs.Name, cs.IP, cs.Port), // 服务节点的名称
- Name: cs.Name, // 服务名称
- Tags: cs.Tag, // tag,可以为空
- Port: cs.Port, // 服务端口
- Address: cs.IP, // 服务 IP
- Check: &api.AgentServiceCheck{ // 健康检查
- Interval: interval.String(), // 健康检查间隔
- GRPC: fmt.Sprintf("%v:%v/%v", cs.IP, cs.Port, cs.Name), // grpc 支持,执行健康检查的地址,service 会传到 Health.Check 函数中
- DeregisterCriticalServiceAfter: deregister.String(), // 注销时间,相当于过期时间
- },
- }
- fmt.Printf("registing to %v\n", ca)
- if err := agent.ServiceRegister(reg); err != nil {
- fmt.Printf("Service Register error\n%v", err)
- return
- }
- }
|