在以下架构中,我们经常遇到一个问题(通常是第一次)。 我们有一个应用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.
}
});
有什么想法吗?
答案 0 :(得分:-1)
1)使用SoapUI检查时间-如果API是Soap API
如果您使用Wildfly,则可以更改超时时间。也许超时是来自服务器。