繁体   English   中英

Spring Boot:部署到外部服务器时如何设置异步超时

[英]Spring Boot: how to set Async timeout when deploying to an external server

在使用嵌入式 tomcat 部署我的 Spring Boot 应用程序时,我将异步超时设置如下:

@Bean
public EmbeddedServletContainerFactory servletContainer() {
    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
    factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {

        @Override
        public void customize(Connector connector) {
            connector.setAsyncTimeout(60000);
        }
    });
    return factory;
}

但是,如何在部署到外部服务器(例如 websphere)时实现相同的目标?

尝试使用该属性:

spring.mvc.async.request-timeout=600000

但这没有任何效果。

编辑:

我曾尝试按照 Andrei 的建议实施 AsyncConfigurer。 但它没有按预期工作。 下面是我的配置类:

@SpringBootApplication
@EnableAsync
 public class Application implements AsyncConfigurer {

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}

@Override
public Executor getAsyncExecutor() {
    Executor executor = new ThreadPoolExecutor(10, 20, 60, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10),
            new ThreadPoolExecutor.AbortPolicy());
    return executor;
}

@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
    // TODO Auto-generated method stub
    return new SimpleAsyncUncaughtExceptionHandler();
}
 }

我将超时设置为 60 秒,但是在尝试此配置时,请求在 30 秒后超时。 正在使用 RestClient。

有什么我想念的吗?

在 SpringApplication(首先实现名为AsyncConfigurer的接口)类中,我将像这样创建我的自定义 AsyncExeuctor:

    @Override
    public Executor getAsyncExecutor() {
        Executor executor = new ThreadPoolExecutor(
                poolSize,
                maxSize,
                keepAlive, 
                TimeUnit.SECONDS, // <--- TIMEOUT IN SECONDS 
                new ArrayBlockingQueue<>(qSize),
                new ThreadPoolExecutor.AbortPolicy() // <-- It will abort if timeout exceeds
        );
        return executor;
    }

您可以在 application.properties 文件中配置poolSizemaxSize等,然后使用 @Value 注释“注入”它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM