一、配置文件的说明

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}}

热更新监听成功!

kratos 配置文件热更新相关推荐

  1. golang配置文件热更新

    配置文件热更新是服务器程序的一个基本功能,通过热更新可以不停机调整程序的配置,特别是在生产环境可以提供极大的便利,比如发现log打得太多了可以动态调高日志等级,业务逻辑参数变化,甚至某个功能模块的开关 ...

  2. 自定义变量 配置文件_跟我一起学.NetCore之自定义配置源热更新对象绑定

    前言 上一篇针对不同的配置源进行举例演示,感受到不同配置源和不同数据格式使用统一操作的便捷(即没有什么加一层解决不了的,这个不是我说的),这里接着说说自定义配置源.配置热更新.配置绑定对象相关操作: ...

  3. 如何将日志配置文件放入到Apollo配置中心并支持热更新

    增加监听日志文件(LoggerConfiguration.java) @Service public class LoggerConfiguration {private static final L ...

  4. 修改html时webpack热更新,webpack学习之路(二)webpack-dev-server实现热更新

    上一章对webpack的配置有了简单的认识. 这一章,我需要学习的是webpack热更新,因为在开发过程中,不希望当文件更改时,人肉去编译文件,刷新浏览器. webpack热更新 webpack-de ...

  5. 白话Elasticsearch30-IK中文分词之热更新IK词库

    文章目录 概述 热更新方案 IK Github 下载Source Code 导入maven工程 修改源码 Dictionary#initial方法中开启扫描线程 HotDictReloadThread ...

  6. Android 美团Robust热更新 使用入门

    Android热更新方案Robust 相信很多人都认识了解过 热修复.热更新.热补丁(对于这个技术也没有特别标准的一种叫法,下面我统一叫热更新),之后的一年里,各种热更新方案如雨后春笋般出现,比较耳熟 ...

  7. Ionic APP 热更新

    开门见山,本文主题:cordova-hot-code-push 作用:cordova热更新插件,提供了在应用程序中对基于Web的内容进行自动更新的功能. GitHub地址:https://github ...

  8. webpack学习之路(四)webpack-hot-middleware实现热更新

    上一节我学习了webpack-dev-middleware,但是单独使用它并没有实现热更新,所以这节我要学习搭配使用webpack-hot-middleware,来实现热更新功能. 创建项目 我们依然 ...

  9. 腾讯开源手游热更新方案,Unity3D下的Lua编程

    写在前面 \\ xLua是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾讯自研游戏,因其良好性能.易用性.扩展性而广受好评.现在,腾讯已经将xLua开源到GitHub. ...

最新文章

  1. 2020 ICPC Macau A. Accelerator(期望,计数,分治FFT)(每日一题 21.7.6)
  2. Qt pro使用sql之类的需要添加的模块
  3. keras保存和载入模型继续训练
  4. legend---十二、js中的js语句和函数和ready函数的关系是什么
  5. python 关闭 定时开启_Python爬虫邮箱定时自动发送
  6. 使用C#+Edge (Chromium)进行Web自动化测试
  7. 【带着canvas去流浪(14)】Three.js中凹浮雕模型的生成方式
  8. 工业智能网关BL110应用之六十二: 实现西门子S7-200SMART PLC 接入MQTT Client One云平台
  9. python英文分词统计词频_Python 分词并统计词频
  10. 标书制作详细教程(零基础速成,助力公司中标)
  11. 由企业证书打包的app--提示证书不受信任的解决途径
  12. 用关键词搜索店铺列表详情
  13. 程序员复工后被裁,600万房21000房贷无力偿还,给年轻人3点忠告
  14. spring cloudAlibaba gateway网关报错,显示无法找到注册中心注册自己。
  15. 【错误】vs 应用程序无法正常启动0xc00007b
  16. 盘口技术大全(六): 吸筹与试盘
  17. 换行符后需要加逗号吗c语言,为什么大多数编程语言都在换行符之前而不是换行符之后使用逗号?...
  18. # 这是一级标题 ## 这是二级标题
  19. 在ModelSim中添加Xilinx仿真库
  20. Java JDK中几个经典的版本

热门文章

  1. excel文件变成乱码如何解决?
  2. 解决访问远程共享时发生 请检查名称的拼写. 否则, 网络可能有问题 故障
  3. 2020h黑苹果 y7000p_拯救者Y7000黑苹果升级macOS 10.15.4分享
  4. xPad该歇了,我们需要的只是小尺寸触控显示器
  5. 使用Struts2 开发一个简易的《B2C电子商务网站》 。续集(适合新手)
  6. Jenkins配置流水线
  7. 钱多多软件制作第六天
  8. FRED应用:TMT MOBIE成像光谱仪的概念设计阶段杂散光分析
  9. (洛谷刷题)P1830 轰炸机III
  10. zzuli oj 2532: 婷婷是土豪 DFS深搜