去:阿波罗配置
最编程
2024-03-16 15:29:35
...
package main
import (
"fmt"
"strings"
"log"
apollolog "github.com/apolloconfig/agollo/v4/component/log"
"github.com/apolloconfig/agollo/v4/env"
"github.com/apolloconfig/agollo/v4/env/config"
"github.com/apolloconfig/agollo/v4/storage"
)
type ChangeListener struct {
}
func main(){
//读取环境中apollo配置
appcfg = env.InitFileConfig()
if appcfg == nil {
return
}
//初始化apollo中日志
agollo.SetLogger(&apollolog.DefaultLogger{})
//根据apollo配置,得到apollo client
client, _ = agollo.StartWithConfig(func() (*config.AppConfig, error) {
return appcfg, nil
})
//设置监听对象
c := &ChangeListener{}
//添加监听
client.AddChangeListener(c)
log.Println("init success")
//初次读取配置
FromApoloSet(client, appcfg)
select{}
}
func FromApoloSetCurcfg(client agollo.Client, c *config.AppConfig) {
namespaces := strings.Split(c.NamespaceName, ",")
for _, namespace := range namespaces {
cache := client.GetConfigCache(namespace)
//日志设置
level, _ := cache.Get("log.level")
fmt.Println(level)
path, err := cache.Get("log.path")
fmt.Println(path)
//设置kafka
addrs, _ := cache.Get("kafka.addrs")
fmt.Println(addrs)
topic, _ := cache.Get("kafka.topic")
fmt.Println(topic)
num, _ := cache.Get("kafka.producernum")
fmt.Println(num)
}
}
func (c *ChangeListener) OnChange(changeEvent *storage.ChangeEvent) {
}
func (c *ChangeListener) OnNewestChange(event *storage.FullChangeEvent) {
//write your code here
namespaces := strings.Split(appcfg.NamespaceName, ",")
namespacemap := make(map[string]bool)
for _, namespace := range namespaces {
namespacemap[namespace] = true
}
//检查想监听的配置
if _, ok := namespacemap[event.Namespace]; ok {
newlogleve, ok := event.Changes["log.level"]
if ok {
newloglevel, _ := newlogleve.(string)
fmt.Println(newloglevel)
}
}
}