You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vert.x ConfigRetriever.listen监听配置文件变更未触发问题

Vert.x ConfigRetriever.listen 不触发配置变更回调的解决方案

核心原因与修复步骤

1. 配置文件路径指向错误

你使用file类型的配置存储时,指定的相对路径config.yaml可能未指向实际修改的src/main/resources/config.yaml文件。运行时程序的工作目录通常为项目根目录,但编译后的资源文件会被复制到target/classes目录,导致你修改的源文件和程序读取的文件并非同一个。

修复方案:改用classpath类型的配置存储,直接读取类路径下的资源:

ConfigStoreOptions classpathStore = new ConfigStoreOptions()
    .setType("classpath")
    .setFormat("yaml")
    .setConfig(new JsonObject().put("path", "config.yaml"));
  • 注意:在IDE中需开启自动编译,修改src/main/resources下的文件后,文件会自动同步到target/classes目录,Vert.x才能检测到配置变化。

2. 坚持使用file类型存储时的路径修正

若必须使用file类型,需确保路径指向正确的文件位置:

  • 先打印当前工作目录确认路径:
System.out.println("当前工作目录:" + System.getProperty("user.dir"));
  • 再将path调整为实际文件的绝对路径,或相对于工作目录的正确相对路径,例如:
.setConfig(new JsonObject().put("path", "src/main/resources/config.yaml"));

3. 确认配置内容发生有效变更

Vert.x ConfigRetriever通过配置的哈希值判断是否变更,仅修改空格、换行等无意义内容不会触发回调。需修改实际配置项(如port值、eb_address值),确保生成的JsonObject与之前存在差异。

4. 验证扫描周期配置

你设置的scanPeriod(1000)(1秒)是合理的,但需确认修改文件后等待足够时间(1-2秒)再观察输出,避免因等待时间不足误以为回调未触发。


内容的提问来源于stack exchange,提问作者chhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:25:21