小编Gui*_*che的帖子

spring-cloud和ribbon可以执行基于DNS的负载平衡吗?

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范围,还是可以将其作为客户端幻灯片负载平衡选项(来自功能区)进行管理?

java spring-cloud netflix-ribbon spring-cloud-netflix

7
推荐指数
1
解决办法
531
查看次数

如何使用 spring-boot-test 中的 ApplicationContextRunner 测试 @ConfigurationProperties?

我需要测试使用@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)

spring-boot spring-boot-test

5
推荐指数
2
解决办法
1612
查看次数