get timeout from property source (#3965)
I try solve the problem getting values from environment, if have any other way to do that please ping me. Fixes #3786
This commit is contained in:
@@ -25,6 +25,7 @@ import com.netflix.client.RetryHandler;
|
||||
import com.netflix.client.config.CommonClientConfigKey;
|
||||
import com.netflix.client.config.DefaultClientConfigImpl;
|
||||
import com.netflix.client.config.IClientConfig;
|
||||
import com.netflix.client.config.IClientConfigKey;
|
||||
import com.netflix.loadbalancer.ConfigurationBasedServerList;
|
||||
import com.netflix.loadbalancer.DummyPing;
|
||||
import com.netflix.loadbalancer.ILoadBalancer;
|
||||
@@ -52,6 +53,7 @@ import org.springframework.cloud.netflix.ribbon.okhttp.OkHttpRibbonConfiguration
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import static com.netflix.client.config.CommonClientConfigKey.DeploymentContextBasedVipAddresses;
|
||||
import static org.springframework.cloud.netflix.ribbon.RibbonUtils.setRibbonProperty;
|
||||
@@ -95,17 +97,32 @@ public class RibbonClientConfiguration {
|
||||
@Autowired
|
||||
private PropertiesFactory propertiesFactory;
|
||||
|
||||
@Autowired
|
||||
private Environment environment;
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public IClientConfig ribbonClientConfig() {
|
||||
DefaultClientConfigImpl config = new DefaultClientConfigImpl();
|
||||
|
||||
config.loadProperties(this.name);
|
||||
config.set(CommonClientConfigKey.ConnectTimeout, DEFAULT_CONNECT_TIMEOUT);
|
||||
config.set(CommonClientConfigKey.ReadTimeout, DEFAULT_READ_TIMEOUT);
|
||||
|
||||
config.set(CommonClientConfigKey.ConnectTimeout, getProperty(
|
||||
CommonClientConfigKey.ConnectTimeout, DEFAULT_CONNECT_TIMEOUT));
|
||||
|
||||
config.set(CommonClientConfigKey.ReadTimeout,
|
||||
getProperty(CommonClientConfigKey.ReadTimeout, DEFAULT_READ_TIMEOUT));
|
||||
|
||||
config.set(CommonClientConfigKey.GZipPayload, DEFAULT_GZIP_PAYLOAD);
|
||||
return config;
|
||||
}
|
||||
|
||||
private Integer getProperty(IClientConfigKey<Integer> connectTimeout,
|
||||
int defaultConnectTimeout) {
|
||||
return environment.getProperty("ribbon." + connectTimeout, Integer.class,
|
||||
defaultConnectTimeout);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public IRule ribbonRule(IClientConfig config) {
|
||||
|
||||
@@ -53,6 +53,7 @@ import org.mockito.ArgumentMatcher;
|
||||
import org.mockito.invocation.InvocationOnMock;
|
||||
import org.mockito.stubbing.Answer;
|
||||
|
||||
import org.springframework.boot.test.util.TestPropertyValues;
|
||||
import org.springframework.cloud.client.loadbalancer.LoadBalancedRetryFactory;
|
||||
import org.springframework.cloud.commons.httpclient.HttpClientConfiguration;
|
||||
import org.springframework.cloud.netflix.ribbon.RibbonAutoConfiguration;
|
||||
@@ -156,6 +157,21 @@ public class RibbonLoadBalancingHttpClientTests {
|
||||
assertThat(result.isContentCompressionEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTimeoutsFromProperties() throws Exception {
|
||||
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
|
||||
HttpClientConfiguration.class, RibbonAutoConfiguration.class,
|
||||
UseDefaults.class);
|
||||
TestPropertyValues.of("ribbon.ConnectTimeout=1265", "ribbon.ReadTimeout=587")
|
||||
.applyTo(context);
|
||||
|
||||
RequestConfig result = getBuiltRequestConfig(null, new SpringClientFactory(),
|
||||
context);
|
||||
|
||||
assertThat(result.getConnectTimeout()).isEqualTo(1265);
|
||||
assertThat(result.getSocketTimeout()).isEqualTo(587);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCompressionDisabled() throws Exception {
|
||||
IClientConfig configOverride = DefaultClientConfigImpl
|
||||
@@ -947,10 +963,18 @@ public class RibbonLoadBalancingHttpClientTests {
|
||||
|
||||
private RequestConfig getBuiltRequestConfig(Class<?> defaultConfigurationClass,
|
||||
IClientConfig configOverride, SpringClientFactory factory) throws Exception {
|
||||
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
|
||||
HttpClientConfiguration.class, RibbonAutoConfiguration.class,
|
||||
defaultConfigurationClass);
|
||||
return getBuiltRequestConfig(configOverride, factory, context);
|
||||
}
|
||||
|
||||
private RequestConfig getBuiltRequestConfig(IClientConfig configOverride,
|
||||
SpringClientFactory factory, AnnotationConfigApplicationContext context)
|
||||
throws Exception {
|
||||
|
||||
factory.setApplicationContext(context);
|
||||
|
||||
factory.setApplicationContext(
|
||||
new AnnotationConfigApplicationContext(HttpClientConfiguration.class,
|
||||
RibbonAutoConfiguration.class, defaultConfigurationClass));
|
||||
String serviceName = "foo";
|
||||
String host = serviceName;
|
||||
int port = 80;
|
||||
|
||||
Reference in New Issue
Block a user