Конфигурация тайм-аута Spring RestTemplate не работает - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть приложение hybris, которое использует шаблон rest для вызова API restful и использует ответ json. Я наблюдаю, что когда приложение попадает в API несколько раз во время загрузки, время отклика от этих API значительно увеличивается. Я установил тайм-ауты на 15 секунд, но эти тайм-ауты не применяются. Соединение все еще остается открытым, и оно сохраняетожидание ответа в течение 5 минут. Я не вижу никаких исключений в журналах для таких длинных запросов, а также не истекает время ожидания.

Ниже приведен код, который я использую для установки времениout.Is есть что-то, что мне не хватает, чтобы установить тайм-ауты.

public <E, T> E processService(String Url, final T serviceReq,
            final Class<E> serviceResponse, final HttpMethod 
httpMethod, final MediaType contentType,
            final Map<String, String> queryParams, final 
Map<String, String> header,
            final Map<String, String> pathVariables) throws 
Exception {
        RestTemplate restTemplate = getRestTemplate();
        setTimeoutProperties(restTemplate);
       <business logic to fire request and process response>}

private RestTemplate getRestTemplate() {
    if (LOG.isDebugEnabled()) {

getRestTemplate().setInterceptors(Collections.singletonList(new 
RequestResponseLoggingInterceptor()));
    }
    return getRestTemplate();
}



private void setTimeoutProperties(RestTemplate template) {
    final int readTimeout = configurationService.getConfiguration().getInteger("client.readtimeout",
            5000);
    final int connectTimeout = configurationService.getConfiguration()
            .getInteger("client.connectiontimeout", 5000);
    if (template.getRequestFactory() instanceof HttpComponentsClientHttpRequestFactory) {
        HttpComponentsClientHttpRequestFactory httpRequestFactory = (HttpComponentsClientHttpRequestFactory) template
                .getRequestFactory();
        httpRequestFactory.setConnectTimeout(connectTimeout);
        httpRequestFactory.setReadTimeout(readTimeout);     
        httpRequestFactory.setConnectionRequestTimeout(connectTimeout);

    } 
}
...