首页 > 其他分享 >go使用consul-api注册服务、注销服务

go使用consul-api注册服务、注销服务

时间:2023-06-30 18:55:27浏览次数:177  
标签:consul global ServerConfig api go reg

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)
}

标签:consul,global,ServerConfig,api,go,reg
From: https://www.cnblogs.com/yanweifeng/p/17517634.html

相关文章

  • 1688阿里巴巴接口中国站按关键字搜索商品API接口采集宝贝详情数据演示案例
     按关键字搜索商品API接口的作用是通过输入关键字来搜索相关的商品信息。这个API接口允许开发者和商家根据用户输入的关键字进行商品搜索,以便展示相关的商品结果给用户。使用按关键字搜索商品API接口,可以实现以下功能:商品搜索:根据用户输入的关键字,通过API接口向电商平台发送搜索请......
  • 基于PhantomJS的网站截图服务API设计与开发
    为公司某业务实现“服务端对网站截图”功能,搜罗了很多技术最终采用了PhantomJS无头浏览器技术。什么是PhantomJS?PhantomJS是一个基于webkit的javaScriptAPI。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行javaScript代码。任何你可以基于在webkit浏览器做的事情,......
  • 1688阿里巴巴接口中国站按关键字搜索商品API接口采集宝贝详情数据演示案例
    ​ 按关键字搜索商品API接口的作用是通过输入关键字来搜索相关的商品信息。这个API接口允许开发者和商家根据用户输入的关键字进行商品搜索,以便展示相关的商品结果给用户。使用按关键字搜索商品API接口,可以实现以下功能:商品搜索:根据用户输入的关键字,通过API接口向电商平台发......
  • go演示GRPC的用法
    首先,需要确保已经安装了Go编程语言和gRPC库。可以使用以下命令安装gRPC库:goget-ugoogle.golang.org/grpc下面是一个基本的gRPC示例,其中包括服务器端和客户端。示例演示了一个简单的计算器服务,客户端可以发送两个数字给服务器,然后服务器返回它们的和。首先,我们将定义一个.pr......
  • Apifox入门使用
    1.产品介绍Apifox 是集API文档、API调试、APIMock、API自动化测试多项实用功能为一体的API管理平台,定位为 Postman+Swagger+Mock+JMeter。Apifox接口文档遵循 OpenApi 3.0(原Swagger)、JSONSchema 规范的同时,提供了非常好用的可视化文档管理功能,零学习成......
  • Django使用python的view创建a标签
    1、views文件deftestaa(request):#aa=[]foriinrange(1,10):aa='<ahref="">test</a>'aa='<ahref="http://www.baidu.com">百度链接</a></br>'#bb="<a......
  • python3的django创建api通过Postman进行端口测试
    1、打开pycharm创建工程及app  创建url  创建views函数:  fromdjango.shortcutsimportrender#Createyourviewshere.fromdjango.viewsimportViewfromdjango.utils.decoratorsimportmethod_decoratorfromdjango.views.decorators.csrfimportcsrf_exemptfr......
  • go爬虫 简单请求
     demo1.go packagemainimport("fmt""io/ioutil""net/http")funcfech(urlstring)string{client:=&http.Client{}req,_:=http.NewRequest("GET",url,nil)req.Header.Set(&quo......
  • MATLAB仿真Gough-Stewart并联机器人斯图尔特6自由度并联机器人逆运动学仿真 动力学控
    MATLAB仿真Gough-Stewart并联机器人斯图尔特6自由度并联机器人逆运动学仿真动力学控制pid控制1.搭建了六自由度Stewart并联机器人simulinksimscape仿真模型2.建立了逆向运动学仿真输入位置和姿态求解各个杆长3.运用pid控制器进行动力学跟踪控制使用MATLAB进行了Gough-Stewar......
  • docker部署mongodb副本集
    1.规格ip地址端口192.168.1.10127017192.168.1.10227017192.168.1.103270172.部署操作2.1 以下操作分别在三台不同的ECS服务器上操作[root@ecs-ff50-73e8-0002~]#mkdir/path/to-p[root@ecs-ff50-73e8-0002~]#cd/path/to/[root@ecs-ff50-73e8-0002to]#ls[root@ecs-ff50-73......