Я работаю над проектом, используя Java 21, Spring Cloud OpenFeign и Apache HttpClient 5. < /p>
Я пытаюсь создать глобальную конфигурацию для всех притворных клиентов и разрешить специфическое поведение клиента с помощью отдельных конфигураций. Класс:
@Configuration
public class GlobalFeignConfiguration {
@Value("${spring.cloud.openfeign.client.config.default.maxTotalConnections}")
public int maxTotalConnections;
@Value("${spring.cloud.openfeign.client.config.default.defaultMaxPerRoute}")
public int defaultMaxPerRoute;
@Value("${spring.cloud.openfeign.client.config.default.validateAfterInactivity}")
public int validateAfterInactivity;
@Value("${spring.cloud.openfeign.client.config.default.keepAlive}")
public int keepAlive;
@Bean
public CloseableHttpClient httpClient() {
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(maxTotalConnections);
connectionManager.setDefaultMaxPerRoute(defaultMaxPerRoute);
RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(1, TimeUnit.MILLISECONDS)
.setResponseTimeout(1, TimeUnit.MILLISECONDS)
.setConnectionKeepAlive(TimeValue.ofMilliseconds(keepAlive))
.build();
return HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.evictIdleConnections(TimeValue.ofMilliseconds(validateAfterInactivity))
.setKeepAliveStrategy((response, context) -> TimeValue.ofMilliseconds(keepAlive))
.evictExpiredConnections()
.setConnectionManager(connectionManager)
.build();
}
@Bean
@Primary
public Client feignClient(CloseableHttpClient httpClient) {
return new ApacheHttp5Client(httpClient);
}
}
Конфигурация для клиента:
@FeignClient(name = "test-client", configuration = TestClientConfig.class, contextId = "test-client")
public interface ITestClientService {
// ...
}
Как я тестирую:
Я установил как ConnectionRequestTimeout, так и ответ на 1 мс для принудительного времени ожидания. Тем не менее, тайм-аут не происходит, что говорит о том, что пользовательский apachehttp5client не используется. /> < /blockquote>
- подтверждение того, что конфигурация по умолчанию игнорируется: < /p>
Я также пробовал: < /strong> < /p>
Добавление @enablefeignclients (defaultConfiguration =
глобалфейгонфигурация. =
{testClientConfig.class, globalfeignconfiguration.class} в
@feignclient < /li>
< /ul>
Тем не менее, глобальная конфигурация не применяется. < /p>
зависимости: < /prost> < /p>
< /plound> < /p>
.
org.springframework.cloud
spring-cloud-starter-openfeign
io.github.openfeign
feign-hc5
12.2
org.apache.httpcomponents.client5
httpclient5
5.2
Подробнее здесь: https://stackoverflow.com/questions/797 ... ng-applied