go使用consul-api注册服务、注销服务
go使用consul-api注册服务、注销服务
标签(空格分隔): go,consul
安装包
go get github.com/hashicorp/consul/api
注册、注销服务
package initialize
import (
"fmt"
"github.com/hashicorp/consul/api"
uuid "github.com/satori/go.uuid"
"go.uber.org/zap"
"os"
"os/signal"
"shop/user_service/global"
"syscall"
)
func ConsulRegister() error {
config := api.DefaultConfig()
config.Address = fmt.Sprintf("%s:%d", global.ServerConfig.ConsulConfig.Host, global.ServerConfig.ConsulConfig.Port)
client, err := api.NewClient(config)
if err != nil {
return err
}
reg := new(api.AgentServiceRegistration)
reg.Name = global.ServerConfig.Name
//reg.ID = global.ServerConfig.Name
serviceId := fmt.Sprintf("%s", uuid.NewV4())
reg.ID = serviceId
reg.Address = global.ServerConfig.Host
reg.Port = global.ServerConfig.Port
reg.Tags = []string{"user", "service", "grpc"}
// 健康检查
reg.Check = &api.AgentServiceCheck{
GRPC: fmt.Sprintf("%s:%d", global.ServerConfig.Host, global.ServerConfig.Port),
GRPCUseTLS: false,
Timeout: "5s",
Interval: "5s",
DeregisterCriticalServiceAfter: "10s",
}
go func() {
quit := make(chan os.Signal)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
if err := client.Agent().ServiceDeregister(serviceId); err != nil {
zap.S().Infof("注销user-service[%s] error", serviceId)
os.Exit(1)
}
zap.S().Infof("注销user-service[%s] success", serviceId)
os.Exit(0)
}()
return client.Agent().ServiceRegister(reg)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理