Cloudfoundry计划添加对映射到多个IP的DNS A记录的支持(每个应用容器实例一个),请参阅docs-proposal.我想知道弹簧云发现是否与功能区配合可以支持基于DNS的客户端负载平衡.
Spring-Cloud DiscoveryClient似乎没有DNS解析,它管理主机名
功能区负载平衡库通过ListOfServers属性支持FQDN列表.
但我无法找到与指定服务器的DNS查找相关的文档:即,如果DNS A/AAA记录(从ListOfServers获取)返回多个IP地址,那么Ribbon会在IP地址之间进行负载平衡吗?
我需要在哪里配置DNS缓存指令?这是java.security支持中的JVM范围,还是可以将其作为客户端幻灯片负载平衡选项(来自功能区)进行管理?
我需要测试使用@ConfigurationProperties bean 的自动配置类。我正在使用https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-test-autoconfig 中记录的 ApplicationContextRunner进行测试更快并避免在每个变体之间启动 servlet 容器。但是,使用 @AutoconfigurationProperties 注释的 bean 不会填充注入 ApplicationContextRunner 的值。
我怀疑我遇到了类似于/sf/answers/3921617031/ 的问题
@ConfigurationProperties 不受您在测试中构建的应用程序上下文管理,尽管它们会在应用程序启动时加载,因为您的应用程序主类上有 @EnableConfigurationProperties。
如何使用 ApplicationContextRunner 启用对 @ConfigurationProperties 的支持?
下面是对应的代码
@Test
void ServiceDefinitionMapperPropertiesAreProperlyLoaded() {
ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(
SingleServiceDefinitionAnswerAutoConfig.class,
DynamicCatalogServiceAutoConfiguration.class
))
// .withPropertyValues(DynamicCatalogProperties.OPT_IN_PROPERTY + "=true") //Not sure why this seems ignored
.withSystemProperties(DynamicCatalogConstants.OPT_IN_PROPERTY + "=true",
ServiceDefinitionMapperProperties.PROPERTY_PREFIX
+ServiceDefinitionMapperProperties.SUFFIX_PROPERTY_KEY+ "=suffix")
;
contextRunner.run(context -> {
assertThat(context).hasSingleBean(ServiceDefinitionMapperProperties.class);
ServiceDefinitionMapperProperties serviceDefinitionMapperProperties
= context.getBean(ServiceDefinitionMapperProperties.class);
assertThat(serviceDefinitionMapperProperties.getSuffix()).isEqualTo("suffix");
});
}
Run Code Online (Sandbox Code Playgroud)
失败了:
org.opentest4j.AssertionFailedError:
Expecting:
<"">
to be equal to:
<"suffix">
but was …Run Code Online (Sandbox Code Playgroud)