kratos 配置文件热更新

一、配置文件的说明

1. 官方有关配置的文档:配置 | Kratos

2. 配置的相关文件(以框架示例的配置文件为例)

1)configs/config.yaml 为项目的配置文件,可进行配置内容的修改

2)internal/conf 放配置文件的结构定义,.proto文件进行配置定义,然后通过在根目录执行

make config,就可以将对应的.pb.go文件生成到相同的目录下供使用。

3)cmd/server/main.go 是服务的入口,这个是服务的入口,我们默认使用了内置的config/file组件从本地文件系统读取配置文件,默认会读取相对路径configs目录,您可以修改这个文件里config.New()参数中使用的配置源,从其它配置源(比如配置中心)进行加载配置。配置在这里将被加载到conf.Bootstrap结构体中,这个结构体的内容可以通过依赖注入,注入到服务内部的其它层,比如server或data,这样各层就能读取到各自需要的配置,完成自己的初始化。

二、配置文件的用法

1. 添加新的配置

1)config.yaml文件中加入

etc:
  test:
    test_01: 111testname

2) internal/conf/conf.proto 文件添加相应结构

message Bootstrap {
  Server server = 1;
  Data data = 2;
  Etc etc = 3; //添加1
}

//添加2
message Etc {
  message Test {
    string test01 = 1;
  }
  Test test = 1;
}

3)输入make config命令生成conf.pb.go文件

make config

4)main.go 入口文件中加入以下代码,用来监听配置热更新

if err := c.Watch("etc.test.test01", func(key string, value config.Value) {
	log.Debugf("config changed: %s = %v\n", key, value)
	test01, err := c.Value("etc.test.test01").String()
	if err != nil {
		panic(err)
	}
	bc.Etc.Test.Test01 = test01
}); err != nil {
	log.Error(err)
}


//2.加 bc.Etc, 方便程序中使用
app, cleanup, err := wireApp(bc.Server, bc.Data, bc.Etc, logger)

5)wire.go 文件中添加 *conf.Etc

func wireApp(*conf.Server, *conf.Data, *conf.Etc, log.Logger) (*kratos.App, func(), error) {
	panic(wire.Build(server.ProviderSet, data.ProviderSet, biz.ProviderSet, service.ProviderSet, newApp))
}

6) 进入wire.go所在文件,执行 wire命令,生成新的 wire_gen.go

7)kratos run执行程序,修改我们设置的配置,将看到:

DEBUG msg=config changed: etc.test.test01 = &{{111tes}}

热更新监听成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值