rest - HttpClient 无法从运行超过一小时的 rest api 获得任何响应
问题描述
我们必须消耗一个运行长时间工作的rest api。我们使用 apache http cient 来使用 api,但如果作业运行时间超过一定时间,比如一小时。即使工作已经完成,我们的客户也只是挂在那里等待响应。
从长远来看,使用 curl 发布到 api 似乎很好。
解决方案
我刚刚找到了解决方案
SocketConfig socketConfig = SocketConfig.custom().setSoKeepAlive(true).setSoTimeout(360000000).build(); //We need to set socket keep alive
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(360000000).build();
CloseableHttpClient client = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).
setDefaultSocketConfig(socketConfig).build();
所以默认情况下 curl 保持套接字活动,所以我需要在 java 中做同样的事情。希望 spring resttemplate 有相同的
推荐阅读
- c# - '未来的实例
' 在颤振中 - swift - Swift - 添加自定义 Curve 扩展后,它不会呈现以编程方式创建的视图,仅呈现使用 Interface Builder 创建的视图
- android - 未知的命令行选项“--recompile-scripts”。将 gradle 更新到 5.1.1 后
- java - 我传递的 JSON 文件列表未在 Android 应用程序中显示
- python-3.x - Python 模块在加载期间自行替换
- regex - 正则表达式匹配不以特定单词或单词集结尾的 URL
- c# - 是否可以将 LINQ“Take”扩展方法的结果转换为原始类型?
- ios - 无法从 Firebase MLkit 在 iPhone X 下方扫描 PDF417 类型的条码
- python - Pysqlcipher3 找不到 sqllite3 共享库
- mysql - 如何在一个查询中使用 sql 条件进行过滤?