Spring Boot-504网关超时

时间:2019-04-11 12:09:45

标签: java spring rest spring-boot

在以下架构中,我们经常遇到一个问题(通常是第一次)。 我们有一个应用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.
    }
});

有什么想法吗?

1 个答案:

答案 0 :(得分:-1)

1)使用SoapUI检查时间-如果API是Soap API

如果您使用Wildfly,则可以更改超时时间。也许超时是来自服务器。