一、配置文件的说明
1. 官方有关配置的文档:配置 | Kratos
2. 配置的相关文件(以框架示例的配置文件为例)
1)configs/config.yaml 为项目的配置文件,可进行配置内容的修改
2)internal/conf 放配置文件的结构定义,.proto文件进行配置定义,然后通过在根目录执行
make config,就可以将对应的.pb.go文件生成到相同的目录下供使用。
configsconfig.New()conf.Bootstrap
二、配置文件的用法
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}}
热更新监听成功!