finclip-app-manager/vendor/gitlab.finogeeks.club/finclip-backend/rmconf
dengxiangcun d78307b1d4 feat:add vendor 2023-11-02 18:36:36 +08:00
..
.gitignore feat:add vendor 2023-11-02 18:36:36 +08:00
.gitlab-ci.yml feat:add vendor 2023-11-02 18:36:36 +08:00
README.md feat:add vendor 2023-11-02 18:36:36 +08:00
apollo.go feat:add vendor 2023-11-02 18:36:36 +08:00
consul.go feat:add vendor 2023-11-02 18:36:36 +08:00
go.mod feat:add vendor 2023-11-02 18:36:36 +08:00
go.sum feat:add vendor 2023-11-02 18:36:36 +08:00
rmconf.go feat:add vendor 2023-11-02 18:36:36 +08:00

README.md

rmconf

remote configuration for mop!

consul

Consul KV作为配置中心, 使用时需要一些约定:

  1. Key的命名需要表达足够多的信息, 例如: 应用, 用户, 环境, 服务等.
  2. Value使用JSON, 并且JSON的key与环境变量一致, 值类型是字符串
  3. 每个环境有一个公用的KEY, 存数据库地址等公共配置

配置优先级: 服务配置 > 公共配置 > 环境变量 > 代码中的默认值, 依次覆盖

demo

	if Cfg.ConsulKVAddr != "" && Cfg.ConsulKVKeys != "" {
		// 从前往后覆盖
		keys := strings.Split(Cfg.ConsulKVKeys, ",")
		for i := 0; i < len(keys); i++ {
			consulConf := &rmconf.ConsulConfManager{}
			path := keys[i]
			if strings.TrimSpace(path) == "" {
				continue
			}
			err := consulConf.InitFromConsul(Cfg, Cfg.ConsulKVAddr, Cfg.ConsulKVKeys)
			if err != nil {
				panic(err)
            }
            // 启动监听
			// if i == len(keys)-1 {
			// 	err = consulConf.StartWatch()
			// 	if err != nil {
			// 		panic(err)
			// 	}
			// }
		}
	}