我想从 Spring 云配置服务器获取我的配置,如 https://vertx.io/docs/vertx-config/java/#_spring_config_server_store 中所述
使用的进口:
import io.vertx.config.ConfigRetrieverOptions;
import io.vertx.config.ConfigStoreOptions;
import io.vertx.core.DeploymentOptions;
import io.vertx.core.VertxOptions;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.dns.AddressResolverOptions;
import io.vertx.core.json.JsonObject;
import io.vertx.reactivex.config.ConfigRetriever;
import io.vertx.reactivex.core.Vertx;
相关部分:
final ConfigStoreOptions storeOptions = new ConfigStoreOptions()
.setType("spring-config-server")
.setConfig(new JsonObject().put("url", "url-to-server"));
final ConfigRetrieverOptions options = new ConfigRetrieverOptions()
.addStore(storeOptions);
我使用 maven 来构建 jar,我可以在 IntelliJ 中运行应用程序。Jar 包含所有需要的依赖项。但是,如果我通过 CLI"java -jar 工件.jar"启动 jar,则会出现以下错误:
2020-01-17 10:54:04.121 信息 [主要] c.e.跑步者 - 引导应用程序...线程"main"中的异常 java.lang.IllegalArgumentException: 未知配置存储 实现:spring-config-server(已知的实现是: [event-bus, file, json, http, env, sys, directory]( 在 io.vertx.config.impl.ConfigRetrieverImpl.(ConfigRetrieverImpl.java:111( at io.vertx.config.ConfigRetriever.create(ConfigRetriever.java:53( 在 com.example.Runner.main(Runner.java:41(
我使用的是 Vertx 版本 3.8.4
可以使用 Java 服务加载程序实用程序找到可用的配置存储。这意味着服务加载器将查找类路径中的所有文件,如下所示:
META-INF/services/io.vertx.config.spi.ConfigStoreFactory
这些文件包含可用配置存储工厂的名称。
由于您构建了一个 FAT jar,因此您的构建过程可能只保留核心服务文件并删除 spring 配置服务器模块附带的服务文件。
必须将生成配置为合并所有这些文件的内容。
默认情况下,Vert.x Maven 插件会这样做,但您也可以使用 Maven shade 插件来执行此操作:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/io.vertx.core.spi.VerticleFactory</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/io.vertx.config.spi.ConfigStoreFactory</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>