#java #spring #spring-boot #resttemplate #spring-web
#java #весна #весенняя загрузка #resttemplate #spring-web
Вопрос:
Я использую следующую конфигурацию для создания RestTemplate
компонента.
@Bean
@Primary
public RestTemplate restTemplate(RestTemplateBuilder builder) {
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
return builder.requestFactory(() -> new BufferingClientHttpRequestFactory(factory))
.build();
}
Проблема: по умолчанию HttpClient
создается следующим образом:
org.apache.http.impl.client.HttpClientBuilder:
String s = System.getProperty("http.keepAlive", "true");
if ("true".equalsIgnoreCase(s)) {
s = System.getProperty("http.maxConnections", "5");
int max = Integer.parseInt(s);
poolingmgr.setDefaultMaxPerRoute(max);
poolingmgr.setMaxTotal(2 * max);
}
Таким образом, по умолчанию в этом шаблоне rest может быть не более 10 одновременных подключений к URL.
Вопрос: как я мог бы наилучшим образом настроить максимальное значение при использовании spring-boot
? Я не нашел ни application.properties
одной записи, чтобы установить для нее пользовательское значение.
Побочный вопрос: что означает свойство для каждого маршрута? Это маршрут localhost:8080/myfirst
, а другой маршрут localhost:8080/mysnd
? Или оба являются одним и тем же маршрутом localhost:8080
?
Ответ №1:
Извините, я неправильно понял ваш вопрос.
Это просто: в application.properties
вы можете создать свою собственную конфигурацию. Например:
## Connection pool max size to appache http client
myProjectId.http.maxConnections=100
И затем в вашем компоненте / сервисе / чем-то еще вы можете ввести его простым действием
@Bean
public class HttpClient {
@Value( "${myProjectId.http.maxConnections}" )
private int maxConnections;
// some code below
}
Комментарии:
1. Хорошо, я подумал, что мог бы каким-то образом переопределить системное свойство
http.maxConnections
сapplication.properties
помощью…