编程语言
首页 > 编程语言> > java – Spring Boot Application – 任何其他API端点的默认超时或控制所有端点超时的简单配置

java – Spring Boot Application – 任何其他API端点的默认超时或控制所有端点超时的简单配置

作者:互联网

我正在使用当前的Spring启动版本(1.4.x),并想知道api调用是否有任何默认超时.我通过设置断点来测试它,但它一直在等待并且没有超时.
我还试图通过使用一些注释或yml设置为我的所有spring-boot应用程序配置默认超时.

我找到了几个替代品(其中一个是here)但是使用可调用实际上添加了额外的非业务逻辑代码,其中在xml bean中设置某些东西在最新的Spring启动应用程序中已经过时了.

解决方法:

您可以在application.properties中尝试server.connection-timeout = 5000.从official documentation开始:

server.connection-timeout= # Time in milliseconds that connectors will wait for another HTTP request before closing the connection. When not set, the connector’s container-specific default will be used. Use a value of -1 to indicate no (i.e. infinite) timeout.

更新:
刚刚注意到你使用的是微服务架构,所以如果你需要在微服务之间进行通信时需要处理超时,我建议在客户端而不是服务器端处理它.如果您尝试调用的微服务过载并且其性能降低到严重影响用户体验的程度,有时最好返回一些回退数据,而不仅仅是删除请求.

想象一下,我们有一个电子商务网站,它具有微服务架构,其中一个向用户提供建议的微服务变得极其缓慢.在这种情况下,首选的解决方案是返回一些后备数据,这些数据可能是本月十大热门产品,而不是向客户显示5xx错误页面.此外,如果后续请求因超时而失败,我们可以决定避免向“推荐服务”发送请求并立即返回回退数据.一段时间后,我们可以尝试再次向“推荐服务”发送请求,如果它变得健康 – 只需使用它而不是后备数据.

这称为Circuit Breaker模式,并且已经在名为Hystrix的框架中实现了它.这是一篇很好的文章,深入解释它:http://www.baeldung.com/spring-cloud-netflix-hystrix.Spring Cloud Feign Spring Cloud Hystrix看起来非常好,特别是考虑到他们使用开箱即用的Discovery服务(例如Spring Cloud Eureka).

标签:java,rest,spring,spring-boot-2,microservices
来源: https://codeday.me/bug/20190722/1501326.html