Spring Cloud OpenFeign: глобальная конфигурация не применяетсяJAVA

Программисты JAVA общаются здесь
Anonymous
Spring Cloud OpenFeign: глобальная конфигурация не применяется

Сообщение Anonymous »

Я работаю над проектом, используя Java 21, Spring Cloud OpenFeign и Apache HttpClient 5. Я пытаюсь создать глобальную конфигурацию для всех притворных клиентов и разрешить конкретные клиентские поведения с помощью отдельных конфигураций.
Однако, кажется, что глобальная конфигурация не применяется. ps/pr/>
Press>


@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 не используется.spring.cloud.openfeign.client.config.test-client.connectTimeout=1

Это подтверждает, что конфигурация по умолчанию игнорируется:
Я также пытался:
  • Добавление @enablefeignclients (defaultConfiguration = GlobalFeignConfiguration.class)
  • {TestClientConfig.class, globalfeignConfiguration.class} В @feignclient
Тем не менее, глобальная конфигурация не применяется.
зависимости:


Подробнее здесь: https://stackoverflow.com/questions/797 ... ng-applied

Вернуться в «JAVA»