首页 > 解决方案 > Spring Boot - 504 网关超时

问题描述

我们在以下架构中遇到了一个经常发生(大多数是第一次)的问题。我们有一个应用 X 与一个调用外部 API 的应用 Y 通信。有时应用 Y 会调用它发回的外部 API:

<html><body><h1>504 Gateway Time-out</h1>The server didn't respond in time.\n</body></html>

我们尝试在 application.yml 中设置这个值

server:
    connection-timeout: 300000

并且还修改了其余的模板超时值:

  private ClientHttpRequestFactory getRequestFactory() {
    HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
    factory.setReadTimeout(600000);
    factory.setConnectTimeout(600000);
    factory.setConnectionRequestTimeout(600000);
    return factory;
  }

引发错误的代码:

return CompletableFuture.supplyAsync(() -> {
    try {
        return restTemplate.exchange(uri, httpMethod, requestEntity, clazz);
    } catch (Exception e) {
        throw new CompletionException(e); // The exception we throw that contains the html code.
    }
});

任何想法 ?

标签: javaspringrestspring-boot

解决方案


推荐阅读