[agent-go] 完成RabbitMQ连接部分的代码

This commit is contained in:
zeaslity
2023-03-21 17:08:22 +08:00
parent 1c57a631d9
commit fe8a4a03fc
19 changed files with 482 additions and 93 deletions

View File

@@ -2,78 +2,38 @@ package config
import (
"agent-go/g"
"bytes"
"fmt"
"github.com/nacos-group/nacos-sdk-go/v2/clients"
"github.com/nacos-group/nacos-sdk-go/v2/clients/config_client"
"github.com/nacos-group/nacos-sdk-go/v2/common/constant"
"github.com/nacos-group/nacos-sdk-go/v2/vo"
"github.com/spf13/viper"
"go.uber.org/zap"
"strconv"
"strings"
)
type OctopusAgentNacosConfig struct {
Spring Spring `json:"spring"`
Server Server `json:"server"`
}
type Server struct {
Port int64 `json:"port"`
}
type Spring struct {
Application Application `json:"application"`
Profiles Profiles `json:"profiles"`
Cloud Cloud `json:"cloud"`
}
type Application struct {
Name string `json:"name"`
}
type Cloud struct {
Nacos Nacos `json:"nacos"`
}
type Nacos struct {
Config Config `json:"config"`
}
type Config struct {
Group string `json:"group"`
ConfigRetryTime int64 `json:"config-retry-time"`
FileExtension string `json:"file-extension"`
MaxRetry int64 `json:"max-retry"`
ServerAddr string `json:"server-addr"`
Timeout uint64 `json:"timeout"`
ConfigLongPollTimeout int64 `json:"config-long-poll-timeout"`
ExtensionConfigs []ExtensionConfig `json:"extension-configs"`
}
type ExtensionConfig struct {
Group string `json:"group"`
DataID string `json:"data-id"`
}
type Profiles struct {
Active string `json:"active"`
}
var log = g.G.LOG
var group = ""
func InitNacos(configFileName string) {
v := parseAgentConfigFile(configFileName, nil)
group := v.GetString("spring.cloud.nacos.config.group")
group = v.GetString("spring.cloud.nacos.config.group")
configClient := startNacosConnection(v, group)
configClient := startNacosConnection(v)
allNacosConfig := getAllNacosConfig(v, group, configClient)
for _, nacosConfig := range allNacosConfig {
parseAgentConfigFile(nacosConfig, v)
for _, nacosConfigContent := range allNacosConfig {
log.Debug(fmt.Sprintf("nacos config conetent is %s", nacosConfigContent))
//parseNacosConfigContend(nacosConfigContent, v)
}
log.Info(fmt.Sprintf("%s config read result are %v", configFileName, v.AllSettings()))
}
func parseAgentConfigFile(configFileName string, v *viper.Viper) *viper.Viper {
@@ -94,19 +54,31 @@ func parseAgentConfigFile(configFileName string, v *viper.Viper) *viper.Viper {
panic(fmt.Errorf("fatal error config file: %s", err))
}
log.Info(fmt.Sprintf("%s config read result are %v", configFileName, v.AllSettings()))
return v
}
func startNacosConnection(v *viper.Viper, group string) config_client.IConfigClient {
func parseNacosConfigContend(configContent string, v *viper.Viper) *viper.Viper {
v.SetConfigType("yaml")
err := v.ReadConfig(bytes.NewBuffer([]byte(configContent)))
if err != nil {
log.Error("nacos config contend read error !", zap.Error(err))
}
return v
}
func startNacosConnection(v *viper.Viper) config_client.IConfigClient {
clientConfig := constant.ClientConfig{
NamespaceId: group,
NamespaceId: "public",
TimeoutMs: v.GetUint64("spring.cloud.nacos.config.timeout"),
NotLoadCacheAtStart: true,
LogDir: "/tmp/nacos/log",
CacheDir: "/tmp/nacos/cache",
AppendToStdout: true,
//UpdateCacheWhenEmpty: true,
//LogDir: "/tmp/nacos/log",
//CacheDir: "/tmp/nacos/cache",
Username: "nacos",
Password: "Superwmm.23",
}
serverAddr := v.GetString("spring.cloud.nacos.config.server-addr")
@@ -118,8 +90,9 @@ func startNacosConnection(v *viper.Viper, group string) config_client.IConfigCli
port, _ := strconv.ParseUint(split[1], 10, 64)
serverConfigs := []constant.ServerConfig{
{
IpAddr: split[0],
Port: port,
IpAddr: split[0],
Port: port,
GrpcPort: port + 1000,
},
}
@@ -142,39 +115,51 @@ func getAllNacosConfig(v *viper.Viper, group string, configClient config_client.
result := make([]string, 0)
// main nacos configs
mainNacosConfigFileName := v.GetString("spring.application.name") + v.GetString("spring.profiles.active") + v.GetString("spring.cloud.nacos.config.file-extension")
getConfig(mainNacosConfigFileName, group, configClient)
result = append(result, mainNacosConfigFileName)
mainNacosConfigFileName := v.GetString("spring.application.name") + "-" + v.GetString("spring.profiles.active") + "." + v.GetString("spring.cloud.nacos.config.file-extension")
log.Debug(fmt.Sprintf("main nacos config file name is %s", mainNacosConfigFileName))
configContent := getConfig(mainNacosConfigFileName, group, configClient)
result = append(result, configContent)
// additional nacos config
additionalNacosConfig := v.Get("spring.cloud.nacos.config.extension-configs")
// 增加断言判定map的类型
m, ok := additionalNacosConfig.(map[string]string)
m, ok := additionalNacosConfig.([]interface{})
if !ok {
fmt.Println("additionalNacosConfig is not a map")
fmt.Println("additionalNacosConfig is not a slice")
return nil
}
for additionalNacosConfigFileName, additionalNacosConfigGroup := range m {
getConfig(additionalNacosConfigFileName, additionalNacosConfigGroup, configClient)
result = append(result, additionalNacosConfigFileName)
for _, addConfigMap := range m {
real, _ := addConfigMap.(map[string]interface{})
for additionalNacosConfigFileName, additionalNacosConfigGroup := range real {
s := additionalNacosConfigGroup.(string)
configContent := getConfig(additionalNacosConfigFileName, s, configClient)
result = append(result, configContent)
}
}
return result
}
// getConfig 从Nacos中获取相应的
func getConfig(dataId string, group string, configClient config_client.IConfigClient) string {
content, err := configClient.GetConfig(vo.ConfigParam{
DataId: dataId,
Group: group,
Type: "yaml",
log.Debug(fmt.Sprintf("nacos config get method dataID is %s, group is %s", dataId, group))
content := ""
configClient.GetConfig(vo.ConfigParam{
DataId: dataId,
Group: group,
Content: content,
Type: "yaml",
})
if err != nil {
panic(err)
}
log.Debug(fmt.Sprintf("dataId %s , group %s, nacos config content is %s", dataId, group, content))
return content
}