【问题标题】:Request timeout in Spring bootSpring Boot 中的请求超时
【发布时间】:2016-09-13 11:58:48
【问题描述】:

我希望设置我的 Spring Boot 服务器超时,比如 15 秒。需要明确的是:我希望如果我的服务器在 15 秒内未能响应,它将返回错误响应(类似于 Heroku 中发生的情况,只有 30 秒)。 我该怎么做?

我的问题实际上源于这个服务是一个网关并且它调用另一个服务,有时需要很长时间才能响应,并且我无法控制该服务的超时。由于我使用 SDK 文件来调用该服务器,因此我无法控制传出呼叫。 有没有一种方法可以全局设置所有拨出电话的超时时间?

谢谢

【问题讨论】:

  • 解决了stackoverflow.com/questions/34852236/…您的第一个问题?
  • 我已经尝试过了,但它并没有真正起作用。应用程序因调用 new HttpComponentsClientHttpRequestFactory() 的异常而崩溃。我找到了这个stackoverflow.com/questions/13837012/…,第三个答案是我需要的Spring Boot,现在程序运行,但在给定的毫秒后它不会停止请求。我错过了一些配置吗?任何进一步的示例/代码/帮助将不胜感激。

标签: java spring spring-mvc spring-boot timeout


【解决方案1】:

您可以将您的库包装到一个额外的线程中,然后在超时的情况下直接加入该线程。 示例见http://www.journaldev.com/1024/java-thread-join-example-with-explanation

【讨论】:

  • 嗯,这是一个很好的技巧,但这是一个技巧。这不是这样做的基础设施或框架方式。特别是我的服务有很多它引入的 API,并且每个这样的调用都应该被包装在一个线程或类似的线程中运行。我想到了这一点,但我正在寻找更基本的东西。
  • @user2339344 实际上,这是一个完美的基本解决方案。它启动并干净地完成工作。也许为线程池添加一些ExecutorService 逻辑或一些花哨的CompletableFuture 用法,仅此而已。搞乱那个 SDK 很可能会带来更多问题。
猜你喜欢
  • 2022-09-28
  • 2016-04-23
  • 2018-09-11
  • 2021-06-23
  • 2021-05-16
  • 2013-12-18
  • 2021-03-06
  • 2018-04-27
  • 1970-01-01
相关资源
最近更新 更多