首页 > 其他分享 >Nacos相关技术文档&Golang操作Nacos实现配置监听的代码

Nacos相关技术文档&Golang操作Nacos实现配置监听的代码

时间:2023-10-25 18:56:38浏览次数:32  
标签:group err 配置 nacos Nacos Golang docker 监听

Nacos相关技术文档

Nacos中文文档

~~~

(三)Nacos开发教程之服务数据持久化

(四)Nacos开发教程之SpringCloud集成服务注册(参考,后续用go实现)

(五)Nacos开发教程之SpringCloud集成配置管理(参考,后续用go实现)

(六)Nacos开发教程之后台系统使用

~~~

Mac-M1电脑本地使用docker搭建Nacos-Server

参考:https://zhuanlan.zhihu.com/p/531360994

安装完访问地址:访问地址:http://localhost:8848/nacos/ 账号/密码:nacos/nacos

# 先search下
docker search nacos

NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nacos/nacos-server               This project contains a Docker image meant t…   435                  [OK]
zhusaidong/nacos-server-m1       Nacos Server for Apple MacOS M1                 22
nacos/nacos-mysql                                                                7

# 安装这个版本的 zhusaidong/nacos-server-m1
docker pull zhusaidong/nacos-server-m1:2.0.3

# docker images 验证下
~ > docker images                                                                                             
REPOSITORY                     TAG        IMAGE ID       CREATED         SIZE
zhusaidong/nacos-server-m1     2.0.3      f1d91cde7e60   2 years ago     1.12GB
mysql                          latest     6ef9eb9d764e   9 months ago    530MB
redis                          latest     667aff0d6b0a   9 months ago    111MB
postgres                       latest     2ce4f03f420b   9 months ago    359MB

# run
docker run -d -p 8848:8848 --env MODE=standalone  --name nacos  zhusaidong/nacos-server-m1:2.0.3

# docker ps 看看后台有没有运行
docker ps                                                                                                     

CONTAINER ID   IMAGE                              COMMAND                  CREATED         STATUS         PORTS                    NAMES
cde07371d1e3   zhusaidong/nacos-server-m1:2.0.3   "bin/docker-startup.…"   3 seconds ago   Up 3 seconds   0.0.0.0:8848->8848/tcp   nacos 

Golang操作Nacos实现一个简单的配置监听

里面的配置如下:

{
    "name":"naruto",
    "age":23,
    "gender":"female"
}

Golang的代码如下:

package main

import (
    "encoding/json"
    "fmt"
    "github.com/nacos-group/nacos-sdk-go/clients"
    "github.com/nacos-group/nacos-sdk-go/clients/config_client"
    "github.com/nacos-group/nacos-sdk-go/common/constant"
    "github.com/nacos-group/nacos-sdk-go/vo"
    "log"
)

const (
    dataId = "config.json"
    group  = "group_test1"
)

type ConfigData struct {
    Name   string `json:"name"`
    Age    int    `json:"age"`
    Gender string `json:"gender"`
}

func newConfigClient() config_client.IConfigClient {
    sc := []constant.ServerConfig{
        {
            IpAddr: "127.0.0.1",
            Port:   8848, // 默认Nacos端口
        },
    }

    cc := constant.ClientConfig{
        // Notice 有命名空间的话 需要加上
        NamespaceId: "fb94fc3b-514b-44d0-9d20-eefeb997c9ad",
        // Notice 其他配置
        TimeoutMs:           5000,
        NotLoadCacheAtStart: true,
        CacheDir:            "./nacos/cache",
        LogLevel:            "error",
    }

    client, err := clients.NewConfigClient(
        vo.NacosClientParam{
            ClientConfig:  &cc,
            ServerConfigs: sc,
        })

    if err != nil {
        log.Fatalf("无法创建Nacos客户端:%v", err)
    }

    return client
}

func main() {

    // 初始化 nacos 客户端
    client := newConfigClient()

    // 获取初始配置
    content, err := client.GetConfig(vo.ConfigParam{
        DataId: dataId,
        Group:  group,
    })

    if err != nil {
        log.Fatalf("无法获取初始配置:%v", err)
    }

    var jsonData ConfigData
    if err := json.Unmarshal([]byte(content), &jsonData); err != nil {
        log.Fatalf("无法解析初始配置:%v", err)
    }

    fmt.Printf("初始配置:%+v\n", jsonData)

    // 启动配置监听
    err = client.ListenConfig(vo.ConfigParam{
        DataId: dataId,
        Group:  group,
        OnChange: func(namespace, group, dataId, data string) {
            var updatedData ConfigData
            if err := json.Unmarshal([]byte(data), &updatedData); err != nil {
                log.Printf("配置更改,但无法解析新配置:%v", err)
            } else {
                jsonData = updatedData
                fmt.Printf("配置已更新:%+v\n", jsonData)
            }
        },
    })

    if err != nil {
        log.Fatalf("无法启动配置监听:%v", err)
    }

    select {}
}

效果:程序运行起来会打印初始配置,如果更新nacos中对应的配置的话,会打印配置更新后的内容~

标签:group,err,配置,nacos,Nacos,Golang,docker,监听
From: https://www.cnblogs.com/paulwhw/p/17787897.html

相关文章

  • Nacos源码阅读心得
    Nacos注册中心(1.4.1)源码解读心得一丶Nacos介绍Nacos是阿里巴巴推出的一款新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它致力于帮助您发现、配置和管理微服务,提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数......
  • golang的Leaf框架安装步骤
    最近在学习golang的Leaf游戏服务器框架(官方github),官方的安装步骤,非常简单,如下图:我在安装的时候也遇到一些疑问,因此记录下来我的实操步骤!1、我的现有GOPATH=E:\Go,src目录下有一些做过的项目2、获取LeafServer,我在src目录下clone的,遵循以前的原则,项目文件都放到GOPATH的src目录......
  • 基于mutation的自定义指令以监听用户使用f12修改dom
    昨天写了功能后,就又封了一个指令,可以直接应用于ui框架的input组件上贴贴:preventChange/index.jsexportconstpreventChange={inserted(el,binding){constelTag=el.tagName.toLowerCase();//获取当前dom下类型为password的input标签constpasswordI......
  • Golang Gin 实战(一)| 快速安装入门
    Gin 是一个非常优秀的GolangWebFramework,它不光API友好,性能也非常高,并且设计简洁,便于入门。所以它(Gin)非常受欢迎,在Github上已经三万三千多个星星,也是我最喜欢的Web框架。  入门要求要想使用GolangGin这个框架,你必须要得会Golang这门语言,如果你还没有开始学,我强烈推荐给你,......
  • Nacos注册中心
    认识NacosNacos是阿里巴巴的产品,现在是SpringCloud中的一个组件,相比Eureka功能更加丰富,在国内受欢迎程度较高服务注册到Nacos1.在cloud-demo父工程中添加spring-cloud-alibaba的管理依赖<!--nacos的管理依赖--><dependency>......
  • nacos加postgresql
    Nacos2.2版本数据库适配插件一、插件概述1.1、简介从2022年12月14日发布的Nacos2.2正式版本开始,Nacos提供了数据源扩展插件,以便让需要进行其他数据库适配的用户自己编写插件来保存数据。当前项目插件目前已简单适配Postgresql,并抽象了一套常见的兼容项的方言类,开发者可以基于该......
  • BOM、DOM、事件监听
    BOM概念:BrowserObjectModel浏览器对象模型,允许JavaScript与浏览器对话,JavaScript将浏览器的各个组成部分封装为对象组成:Window:浏览器窗口对象Navigator:浏览器对象Screen:屏幕对象History:历史记录对象Location:地址栏对象 Window:浏览器窗口对......
  • spring-cloud-starter-alibaba-nacos-discovery 配置信息
    spring-cloud-starter-alibaba-nacos-discovery1.spring-config-metadata.json{"groups":[{"name":"management.endpoint.nacosdiscovery","type":"com.alibaba.cloud.nacos.endpoint.NacosDiscovery......
  • nacos启动脚本去除多余的javac
    github上面一个阿里巴巴开源的服务叫nacos,用途在这里不多说了,主要是在启动时他会寻找javac,但是很多服务器可能没有,所以我小小的修改了一下他的startup.sh然后给他打成了rpm包,也不知道网站可不可以直接把包传上来,这里是github的地址,乱放在一个仓库里面的:https://github.com/linux......
  • ETL实现实时文件监听
    一、实时文件监听的作用及应用场景实时文件监听是一种监测指定目录下的文件变化的技术,当产生新文件或者文件被修改时,可实时提醒用户并进行相应处理。这种技术广泛应用于数据备份、日志管理、文件同步和版本控制等场景,它可以帮助用户及时发现和解决问题,提高工作效率。应用场景包括但......