gpt4 book ai didi

java - 使用 Spring Boot 异步自定义 ThreadPoolTask​​Executor

转载 作者:行者123 更新时间:2023-12-02 03:02:58 25 4
gpt4 key购买 nike

我有一个 Spring Boot 应用程序,负责通过 REST 应答请求。我还推送有关我的应用程序调用的指标。由于这是一项单独的任务,并且我必须立即响应用户,因此我希望异步发布该指标。所以我用过它:

ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(2);
executor.setMaxPoolSize(2);
executor.setQueueCapacity(500);
executor.setThreadNamePrefix("MyApp-");
executor.initialize();
return executor;

但是,这个使用 SimpleAsyncTaskExecutor 并且不重用任何线程。

1) 如何使用 ConcurrentTaskExecutor 代替 SimpleAsyncTaskExecutor

2) 哪种实现最适合我的需求?

最佳答案

要使您的自定义执行器正常工作,请确保将其注册为 Bean,并在使用 @Async 注释的方法上引用它:

@Bean(name = "transcodingPoolTaskExecutor")
public Executor transcodingPoolTaskExecutor() {
final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(2);
executor.setMaxPoolSize(2);
executor.setQueueCapacity(500);
executor.setThreadNamePrefix("transcoder-");
executor.initialize();
return executor;
}

在持有该方法的@Service中:

@Async("transcodingPoolTaskExecutor")
public void transcodeVideo(UUID fileId) {
mediaFileService.transcodeVideo(fileId);
}

关于java - 使用 Spring Boot 异步自定义 ThreadPoolTask​​Executor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41068812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com