提问人:yashwardhan s 提问时间:10/30/2023 更新时间:10/30/2023 访问量:43
@async Spring Boot 中未按预期工作
@async not working as expected in spring boot
问:
我正在尝试进行并行休息调用。
我在类本身中设置了这样的执行器。
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(25);
executor.setQueueCapacity(100);
executor.initialize();
executor.setThreadNamePrefix("Async-");
我像这样把它传递到我可完成的未来中。
List<CompletableFuture<String>> futures = urls.stream()
.map( url -> CompletableFuture.supplyAsync(() -> function(url,start), executor))
.toList();
这按预期工作。预期
现在,当我尝试使用@async注释时,它无法按预期工作,我没有执行器对象通过异步调用传递它,因此它不使用我的执行器。我是springboot的新手,所以我不确定bean是如何工作的。
List<CompletableFuture<String>> futures = urls.stream()
.map( url -> CompletableFuture.supplyAsync(() -> function(url,start)))
.toList();
这是我的异步配置文件
@Configuration
@EnableAsync
public class AsyncConfiguration {
@Bean
public Executor asyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(25);
executor.setQueueCapacity(100);
executor.initialize();
executor.setThreadNamePrefix("Async-");
return executor;
}
}
我该如何解决这个问题?
答:
1赞
Bob
10/30/2023
#1
@EnableAsync
应在使用的类中进行注释,或者 .@Async
MainApplication
例如
@Service
@EnableAsync
public class TestService{
@Async
public void doAsync() {
// ...
}
}
上一个:无法异步执行作业
评论