Nacos中间件go sdk使用填坑指南

Author: wencoo
Blog:https://wencoo.blog.csdn.net/
Date: 10/05/2023
Details:

正文

nacos是一个管理配置的服务,准备接入,使用go sdk,获取配置,但是怎么都无法正确获取,说明,nacos服务器是在火山服务器上,管理界面是通过域名访问的。无法访问通,为了排查问题,所以在本地(linux环境)搭建了一个nacos服务,然后通过go sdk,可以正确获取配置

注意点1:没有指定命名空间,默认是public,public的NamespaceId字段为空,不用填

然后换上域名访问,则无法获取配置,测试:给本地服务加上域名,通过域名访问,可以正确访问,使用openapi去访问,也可以正确访问(自己搭建的服务),但是使用go sdk却不行(云服务)

 curl -X GET "http://180.184.32.133:8848/nacos/v1/cs/configs?tenant=79de88b6-348a-465a-81f0-632f65bcc72c&dataId=nacosConfigMq.json&group=DEFAULT_GROUP"

注意点2:本地服务设置域名,需要在nginx中做配置,并且在hosts中添加域名映射,来解析域名

在添加了域名映射后,使用openapi,可以做到访问本地服务和云服务的访问,go sdk,经过各种测试,查找资料,发现原来是端口问题,将端口加入到云服务的安全组后,go sdk也可以获取配置信息了

注意点3:添加8848,9848,9849三个端口,go sdk才可以获取配置信息

注意点4:程序在docker中,部署时需要将第三点3个端口映射出来

go sdk获取配置信息示例代码

nacosApi.go

package nacos_go

import (
	"fmt"
	// "time"
	"io/ioutil"
	"net/http"
	// "net/url"
	// "strconv"
	// "strings"


	"github.com/nacos-group/nacos-sdk-go/v2/clients"
	"github.com/nacos-group/nacos-sdk-go/v2/common/constant"
	"github.com/nacos-group/nacos-sdk-go/v2/vo"

	// "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"

)


func GetMqConfFromNacos(){
	// 至少一个ServerConfig   test.nacos.pick-fun.com.cn   180.184.32.133 
	serverConfigs := []constant.ServerConfig{
		{
			IpAddr:      "test.nacos.pick-fun.com.cn",
			Port:        8848,
			Scheme:		 "http",
			ContextPath: "/nacos",
		},
	}

	// 创建clientConfig 79de88b6-348a-465a-81f0-632f65bcc72c
	clientConfig := constant.ClientConfig{
		NamespaceId:         "79de88b6-348a-465a-81f0-632f65bcc72c", // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId。当namespace是public时,此处填空字符串。
		TimeoutMs:           5000,
		NotLoadCacheAtStart: true,
		LogDir:              "tmp/nacos/log", //当
		CacheDir:            "tmp/nacos/cache",
		// RotateTime:          "1h",
		// MaxAge:              3,
		LogLevel:            "debug",
	}
	// 创建动态配置客户端的另一种方式 (推荐)
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &clientConfig,
			ServerConfigs: serverConfigs,
		},
	)
	if err != nil {
		panic(err)
	}
	//获取配置信息
	content, err := configClient.GetConfig(vo.ConfigParam{
		DataId: "nacosConfigMq.json",
		Group:  "DEFAULT_GROUP"})
	if err != nil {
		fmt.Println("GetConfig err: ",err)
	}else{
		fmt.Println("GetConfig : ",content)
	}

}

func Keyongyijing(){
	//tenant=79de88b6-348a-465a-81f0-632f65bcc72c&
	// url := "http://192.168.0.223:8848/nacos/v1/cs/configs?dataId=nacosConfigMq.json&group=DEFAULT_GROUP"
	url := "http://180.184.32.133:8848/nacos/v1/cs/configs?tenant=79de88b6-348a-465a-81f0-632f65bcc72c&dataId=nacosConfigMq.json&group=DEFAULT_GROUP"


	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))
}

main.go

package main

//#cgo LDFLAGS: -Wl,--allow-multiple-definition
import "C"

import (
	"go_plugin/nacos_go"
)

//go build -buildmode=c-archive -o lib/libgoplugin.a
func main() {
	nacos_go.GetMqConfFromNacos()
	// nacos_go.Keyongyijing()
}

参考

打赏

欢迎加微信进行技术交流,备注”博客技术交流“

在这里插入图片描述

如果该文章对您有帮助,可以小小的打上一下哈,您的支持,是对原创的最大支持。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/bootleader/article/details/130599511