RestTemplate с пользовательским ConnectionPool? - PullRequest
0 голосов
/ 02 апреля 2019

Я использую следующую конфигурацию для создания компонента 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);
    }

Таким образом,по умолчанию максимальное количество одновременных подключений по URL-адресу 10 в этом шаблоне отдыха.

Вопрос: как лучше настроить максимальный итог при использовании spring-boot?Я не нашел ни одной записи application.properties, чтобы установить для нее пользовательское значение.

Sidequestion: что означает свойство для маршрута ?Это маршрут localhost:8080/myfirst, а другой маршрут localhost:8080/mysnd?Или оба одинаковых маршрута localhost:8080?

1 Ответ

0 голосов
/ 02 апреля 2019

Извините, я неправильно понял ваш вопрос.

Это просто: в 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

}
...