如果启动时在获取 MongoDB 归档文件的过程中失败,请配置 Flapdoodle 的包下载器。HTTP 代理列表可以为公网下载线路提供候选端点。此时数据库客户端尚未建立后续连接。

现代基于 transition 的自定义方式通过 DownloadPackage 提供代理:

Mongod mongod = new Mongod() {
    @Override
    public DownloadPackage downloadPackage() {
        return DownloadPackage.withDefaults()
            .withDownloadConfig(DownloadConfig.defaults()
                .withProxyFactory(() -> Proxys.httpProxy("proxy.example", 8080)));
    }
};

使用所选 Flapdoodle MongoDB 与 embedded-process 库中的类,然后在应用或测试配置中使用这个自定义的 Mongod。lambda 负责提供 HTTP 代理;归档 URL 仍是下载目标。

缓存命中时的成功启动不会实际经过该代理。包的 transition 流程会先检查下载缓存,因此在评估启动结果时,要把缓存命中与真正的归档下载区分开。

该模式属于 transition API。较早的 RuntimeConfig 构建器以及 Spring Boot 以前的 DownloadConfigBuilderCustomizer 使用不同的自定义与缓存布局接口;请让示例与应用中的依赖版本相匹配。

相关文章