Spring Boot管理日志中重复发生的AsyncRequestTimeoutException

时间:2016-10-04 15:24:18

标签: java spring spring-boot spring-boot-admin

我目前正在我的本地计算机上运行Spring Boot Admin以进行测试,并且我得到以下错误不间断。应用程序本身似乎工作正常,但我的日志正在填补这些错误。我不确定为什么......

'%y%m%d'

4 个答案:

答案 0 :(得分:11)

我也有类似的错误。在你的application.yml中尝试这个属性

spring:
  mvc:
    async:
      request-timeout: -1  

答案 1 :(得分:1)

或者在没有弹簧靴的情况下添加

    @Override
    public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
        long timeout = 300000;// for example 5 minutes
        WebMvcConfigurer.super.configureAsyncSupport(configurer);
        configurer.setDefaultTimeout(timeout);
    }

到实现WebMvcConfigurer的配置类

答案 2 :(得分:0)

您可以为特定订阅配置超时,而不是在应用程序级别配置超时。

    @GetMapping(value = "/subscription")
    public SseEmitter subscription() {
        SseEmitter emitter = new SseEmitter((long) (60000 * 5));
        return emitter;
    }

所以在上面的摘录中,我为这个特定的连接提供了 5 分钟的时间。其余连接仍将使用服务器默认超时。

答案 3 :(得分:0)

如果使用 ComplatebleFuture<Any> 作为 @RestController 函数的返回类型并使用 Tomcat 作为后备容器。然后需要将 catalina Connector 定制器注册到 spring 上下文中,这将调整异步连接超时。因为 org.apache.catalina.connector.Connector 有自己的属性 protected long asyncTimeout = 30000;,它将终止异步请求的处理。

@Configuration
class TomcatAsyncConfig {
    @Bean
    fun asyncTimeoutCustomize(): TomcatConnectorCustomizer =
        TomcatConnectorCustomizer { connector -> connector.asyncTimeout = 180000 }
}

设置值 spring.mvc.async.request-timeout: -1 否则 server.tomcat.connection-timeout 不会。