Nacos中间件go sdk使用填坑指南
无法访问通,为了排查问题,所以在本地(linux环境)搭建了一个nacos服务,然后通过go sdk,可以正确获取配置。在添加了域名映射后,使用openapi,可以做到访问本地服务和云服务的访问,go sdk,经过各种测试,查找资料,发现原来是端口问题,将端口加入到云服务的安全组后,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()
}
参考
- Nginx定义域名访问方式
- Nacos连接异常Send request fail, request=ConfigQueryRequest retryTimes=0,errorMessage=Client not connecte
- Nacos 文档 Open API 指南
打赏
欢迎加微信进行技术交流,备注”博客技术交流“
如果该文章对您有帮助,可以小小的打上一下哈,您的支持,是对原创的最大支持。
更多推荐
已为社区贡献1条内容
所有评论(0)