当前位置: 首页 > 知识库问答 >
问题:

Apache HTTP客户端超时

师冥夜
2023-03-14

我正在使用Apache HTTP客户端联系外部服务。这项服务可能需要几个小时(如果不是更长的话)才能产生响应。我尝试了一些不同的方法,但要么以套接字结束,要么以读取超时结束。我刚刚尝试使用RequestConfig将套接字和连接超时设置为0,根据文档,这应该是无限的,但请求总是在1小时后返回。有什么想法吗?

共有2个答案

龙学
2023-03-14

理想情况下,任何需要超过几分钟(2-3分钟左右)的服务都应该异步处理,而不是保持连接打开一小时左右。这是对客户端和服务器端资源的浪费。

替代方法可以是解决这类问题。

  1. 您调用服务来触发处理(准备响应)。它可能会返回一些唯一的请求ID。
漆雕昊天
2023-03-14

我同意一般人的看法,不要试图让HTTP连接保持这么长时间,但是,如果你的手被绑住了,你可能会发现你在TCP中遇到超时,TCP级别的保持有效可能会挽救这一天。

请参阅此链接以获取设置TCP保持活动状态的帮助,您不能在HttpClient中执行此操作。这是一个操作系统,它将定期发送ACK,这样即使HTTP流中没有发生任何事情,您的TCP连接也不会空闲。

Apache HttpClient TCP Keep-Alive(套接字保持活力)

即使TCP连接处于活动状态,也很难长时间保持它们。YMMV。

 类似资料:
  • 我读了很多文章来寻找java应用程序的最佳Rest客户机,最后我发现将Jersey与ApacheHTTP客户机4.5结合使用非常好,但在很多文章中,我发现现在改型是最好的(我没有提到Volley,因为在我的例子中,我不需要API支持缓存)。 对于java客户机应用程序,改型是否更好。还是对Android来说更好?为什么我以前没有找到这个比较。。它们无法比较? 我可以比较一下它们的性能、连接池、它们

  • 问题内容: 如何在Go HTTP客户端中使空闲超时? 空闲超时意味着从HTTP客户端内部调用Conn接口的Read / Write方法时发生超时。当客户端下载文件并且由于读取超时而导致下载失败时,此功能很有用。 问题答案: 您需要创建自己的,并返回,以设置适当的读写期限。 该会是这个样子:

  • 在我们的Spring应用程序中,我们依赖外部系统。我们希望为该系统的请求设置超时,但无法确定如何配置。 我们使用这个: 我已经尝试过这个:如何使用泽西2. x设置连接和读取超时?和许多其他建议,但无法让它工作。任何建议都将不胜感激。 不工作的更新: 也

  • 我对Spring集成的设想是: 使用自定义协议(大小和内容)发送数据的十个生产者 我必须解码这个自定义协议,然后处理结果。 所以我尝试了很多配置,目前最好的配置如下: 序列化类为: 我使用此代码来测试服务器: 当我用一个线程执行此操作时,如果我尝试执行多个线程,则效果很好,如: spring集成服务器卡住了,我有以下警告: 而且它不工作,服务器无法接收消息。 我错在哪里?非常感谢。 编辑 我这样修

  • 我们有一个Spring项目即将投入生产。目前,该项目正在使用ApacheHTTP客户端。有一种想法是将用作。 我正在四处挖掘,看看使用比使用有什么显著的优势。另外,了解HTTP传输在RestTemplate的实现中做了什么也很有趣。ApacheHTTP客户端已被多个团体使用多年,并享有良好的声誉。 我们是否会冒险转移到? 此外,本博客指出,RestTemplate需要针对生产进行配置,尽管配置是最

  • 问题内容: 我在ElastiCache上运行Redis集群。 多个进程连接到Redis集群。每个进程都位于Docker容器中。流程不尽相同-我有一个流程,一个流程等。 正常运行几天后,连接到Redis时,我的某些进程开始超时。当我进入受影响的容器并尝试通过到达群集时,与群集的连接超时。这告诉我,问题不仅影响过程,而且影响整个容器。 当我从任何其他容器中使用时,连接都不会出现问题。 我的进程会根据需