java - 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.
}
});
任何想法 ?
解决方案
推荐阅读
- mysql - SELECT * FROM Table WHERE Col1, Col2 BETWEEN a AND b
- sql - SQL 内连接,按两个表中的时间戳排序
- mysql - 如何允许 mysql(mariadb) 从 /tmp 读取文件 - Fedora 30
- c++ - 当我没有动态声明我的数组时,这个 display() 如何显示数组值
- docker - 使用 Docker 多阶段构建创建多个镜像
- opencv - 如何使用来自谷歌云功能的 python 中的 opencv 从 wyze 相机访问视频流?
- android - AndroidX 突然导致 NativeScript 构建失败
- fortran - 为 Fortran 代码设置目录结构的公认方法是什么?
- machine-learning - BERT 是否隐含地为字数建模?
- python - 为什么我只得到列表的第一个单词