首页 > 其他分享 >Go使用nacos配置中心

Go使用nacos配置中心

时间:2024-11-07 10:33:56浏览次数:4  
标签:group string err fmt 配置 nacos yaml Go

不使用注册中心的话,可以使用viper,时时监控配置文件的变化,有变化就更新

nacos安装可以参考官网选择二进制或者docker https://nacos.io/download/nacos-server/

go

package main

import (
	"fmt"
	"github.com/nacos-group/nacos-sdk-go/clients"
	"github.com/nacos-group/nacos-sdk-go/common/constant"
	"github.com/nacos-group/nacos-sdk-go/vo"
	"gopkg.in/yaml.v2"
)

type DatabaseNew struct {
	Host     string `yaml:"host"`
	Port     int    `yaml:"port"`
	Username string `yaml:"username"`
	Dbname   string `yaml:"dbname"`
	Password string `yaml:"password"`
}
type ConfigNew struct {
	Database DatabaseNew  //数据库的配置
}

var GlobalConfig ConfigNew

func main() {
	sc := []constant.ServerConfig{{
		IpAddr: "127.0.0.1",
		Port:   8848,
	}}

	cc := constant.ClientConfig{
		NamespaceId:         "xxxxx", // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId。当namespace是public时,此处填空字符串。
		TimeoutMs:           3000,  //超时
		NotLoadCacheAtStart: true, //启动时
		LogDir:              "log",
		CacheDir:            "cache",
		LogLevel:            "debug",
	}

	configClient, err := clients.CreateConfigClient(map[string]interface{}{
		"serverConfigs": sc,
		"clientConfig":  cc,
	})
	if err != nil {
		fmt.Println(err.Error())
	}

	content, err := configClient.GetConfig(vo.ConfigParam{
		DataId: "user",
		Group:  "prod",
	})
	SetConfig(content)

	if err != nil {
		fmt.Println(err.Error())
	}
	err = configClient.ListenConfig(vo.ConfigParam{
		DataId: "user",
		Group:  "prod",
		OnChange: func(namespace, group, dataId, data string) {
			fmt.Println("配置文件发生了变化...")
			fmt.Println("group:" + group + ", dataId:" + dataId + ", data:" + data)
			SetConfig(data)
		},
	})
   ch := make(chan int)
	ch <- 1
}

func SetConfig(content string) {
	fmt.Println(content) 
   //或者使用viper
	err := yaml.Unmarshal([]byte(content), &GlobalConfig)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Printf("%+v", GlobalConfig)
}

标签:group,string,err,fmt,配置,nacos,yaml,Go
From: https://www.cnblogs.com/qcy-blog/p/18531655

相关文章

  • 安装和配置CentOS9
    安装和配置CentOS9一、下载CentOS9镜像文件1.访问官网:首先,你需要访问CentOS的官网或阿里云镜像网站2.选择版本:在官网上,选择CentOS9的64位操作系统版本进行下载。3.等待下载:点击下载链接后,等待镜像文件下载完成。二、安装CentOS91.创建虚拟机(以VMwareWorkStationPro为例)......
  • Spring Boot 多数据源配置实战指南:从入门到精通
    引言在现代企业级应用开发中,往往需要同时访问多个数据库来满足不同的业务需求。SpringBoot作为一个快速开发的框架,提供了非常便捷的方式来配置和管理多数据源。本文将详细介绍如何在SpringBoot项目中配置多数据源,并通过实际代码示例展示其应用场景。一、为什么要配置多......
  • Go-性能优化、优化分析、调优实战pprof
    使用官方自带benchmark进行基准性能测试第一个是函数名-核数第二个是执行次数第三个是一次执行时间第四个是一次执行的多大的内存第五个是一次执行申请几次内存slice用的时候在make()初始化切片时提供容量信息data:=make([]int,0)data:=make([]int,0,size)//goodpre......
  • Hbase讲解与安装与配置部署
    目录1.讲解一、HBase的起源与背景二、HBase的特点三、HBase的架构四、HBase的数据模型五、HBase的访问接口六、HBase的使用场景2.安装3.配置部署1.讲解HBase是一个分布式的、面向列的开源数据库,它是ApacheHadoop项目的子项目。以下是对HBase的详细讲解:一、H......
  • ansible安装配置
    环境检查,安装#管理节点python>=2.6ansibleopenssh#被管理节点python>=2.4openssh#yum源检、安装epel源yumrepolistyuminstallwget-ywget-O/etc/yum.repos.d/epel.repohttp://mirrors.aliyun.com/repo/epel-7.repo#或yuminstall-yepel-release#安装ans......
  • 基于 Go + Vue3!一款开源的 Nginx 管理 Web 工具!
    大家好,我是Java陈序员。Nginx由于其强大的性能,常常被用于企业开发中!今天,给大家介绍一款开源的Nginx管理Web工具,支持通过界面完成Nginx的配置!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍NginxUI——一个......
  • ensp中如何配置dhcp
    1.环境搭建2.设备配置1.PC地址选择dhcp2.开启dhcp功能3.创建地址池4.配置地址池gateway-list192.168.1.10//配置自动获取时候的网管network192.168.1.0mask255.255.255.0 //配置自动获取的地址范围excluded-ip-address192.168.1.100192.168.1.254//配置......
  • 思科设备配置静态路由
    1.环境搭建2.基础配置 地址从左到右分别为192.168.1.0/24,192.168.2.0/24 ,192.168.3.0/24 ,192.168.4.0/24PC0路由器0路由器1路由2PC23.配置路由分析:静态路由每一跳都需要你手写,所以在路由器上0要配置去往192.168.3.0192.168.4.0的地址,环回口地址是单独......
  • 超详细2024版Latex安装Texlive+Texstudio(含环境配置)
    一、软件介绍(一)Latex介绍LaTeX(LATEX,音译“拉泰赫”)是一种基于ΤΕΧ的排版系统,由美国计算机学家在20世纪80年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由ΤΕX所提供的强大功能,能在几天、甚至几小时内生成很多具有书籍质量的印刷品。对于生成......
  • 静态路由规则配置
    静态路由配置本质上通过配置虚拟机实现不同网段之间进行通信第一步:准备3台虚拟机第一台网卡配置NAT模式;第二台配置两个网卡,分别为配置NAT模式+LAN区段;第三台配置LAN区段第二步:配置网卡相关信息先查看宿主机(物理机)VMnet8网卡的IP和子网掩码配置网卡相关信息【具体的......