Sail icon indicating copy to clipboard operation
Sail copied to clipboard

sail动态加载配置没有改变

Open lvzhouzhijun opened this issue 1 year ago • 1 comments

package main

import ( "fmt" "github.com/HYY-yu/sail-client" "time" )

type Config struct { Name string Host string Port string Mode string Database string UserRpc struct { Etcd struct { Hosts []string Key string } } Redisx struct { Host string Pass string } JwtAuth struct { AccessSecret string } }

func main() { var cfg Config // /conf/98c6f2c2287f4c73cea3d40ae7ec3ff2/user/user-api.yaml s := sail.New(&sail.MetaConfig{ ETCDEndpoints: "192.168.101.30:3379", // ETCD 地址 ProjectKey: "98c6f2c2287f4c73cea3d40ae7ec3ff2", // sail中创建的项目id Namespace: "user", // sail 中的命名空即可 Configs: "user-api.yaml", // sail 中创建的配置文件 ConfigFilePath: "./conf", // 这个目录中不要存放任何内容,因为会先删除在创建 LogLevel: "DEBUG", }, sail.WithOnConfigChange(func(configFileKey string, s *sail.Sail) { if s.Err() != nil { fmt.Println(s.Err()) return } // 加载配置文件 fmt.Println(s.Pull())

   v, err := s.MergeVipers()
   if err != nil {
      fmt.Println(err)
      return
   }
   // 解析配置文件到对象中
   v.Unmarshal(&cfg)
   fmt.Println(cfg, "\n"+cfg.Database)
}))
if s.Err() != nil {
   fmt.Println(s.Err())
   return
}
// 加载配置文件
fmt.Println(s.Pull())

v, err := s.MergeVipers()
if err != nil {
   fmt.Println(err)
   return
}
// 解析配置文件到对象中
v.Unmarshal(&cfg)
fmt.Println(cfg, "\n"+cfg.Database)
for {
   time.Sleep(time.Second)
}

} 这个是我的代码 这个是控制台报错 image

lvzhouzhijun avatar Nov 19 '24 14:11 lvzhouzhijun

Client received GoAway with error code ENHANCE_YOUR_CALM and debug data equal to ASCII "too_many_pings" 这个报错需要控制下和etcd通讯的频率,也就是ping的频率, 可以加上我红框的代码后再试试

Image

cmxStarCoding avatar Sep 26 '25 10:09 cmxStarCoding