Я пытаюсь ввести пользовательский PoolingHttpClientConnectionManager
для моего приложения SpringBoot. Я следовал этому руководству: https://springframework.guru/using-resttemplate-with-apaches-httpclient/
Я настроил ConnectionManager, KeepAliveStrategy и настроил компонент httpClient
. После этого я настроил RestTemplateConfig
с новым httpClient
и пользовательским RequestFactory
методом
@Autowired
public RestTemplateConfig(CloseableHttpClient httpClient) {
this.httpClient = httpClient;
}
@Bean
public HttpComponentsClientHttpRequestFactory clientHttpRequestFactory() {
HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
clientHttpRequestFactory.setHttpClient(httpClient);
return clientHttpRequestFactory;
}
У меня есть более одного RestTemplate
Бина, все они квалифицированы по имени, в методах я указываю фабричный метод (я пробовал два способа)
.requestFactory(() -> new BufferingClientHttpRequestFactory(clientHttpRequestFactory()))
.requestFactory(this::clientHttpRequestFactory)
После того, как я внес свои изменения, интеграционные тесты начинают давать сбой. В журналах WireMock я вижу, что мои заглушки созданы и они есть, но когда мой interceptor
выполняет вызов
ClientHttpResponse httpResponse = execution.execute(request, body);
httpResponse
равен NULL
I ' Я не уверен, что мне не хватает настройки WireMock или я что-то неправильно настроил, и это даже не сработает. IRL
Если я удаляю настройку requestFactory()
, тогда все тесты снова проходят, что заставляет меня склоняться к тот факт, что что-то настроено неправильно.
Заранее спасибо!