首页 > 解决方案 > 我的控制器方法它正在加载数据并导出到另一个源,在这里我想让这个异步

问题描述

在这里,我想将以下代码设为异步。如果我添加此注释,我阅读了@Async该注释,它是否足够或在主应用程序中还需要添加这里还需要考虑另一点,如果我多次调用此 API 第二次调用应该等到第一次调用完成(例如:我有第一次调用可能需要 5 分钟才能完成,但我再次在后台再次调用第一次调用仍在运行,一旦第一次调用完成,那么它只需要开始我的第二次调用)。

@Operation(summary = "load operation")
@PostMapping(value = "delta/load")
public void sendDeltaOutbound() {
    cppService.loadData();
}

标签: spring-bootasynchronous

解决方案


你必须有

@SpringBootApplication
@EnableAsync
public class AsyncMethodApplication {

}

在服务方式上,你必须有@Async


@Service
public class FooService {

  @Async
  public BarFuture<Fuu> findFuuBaa(String baa) throws InterruptedException {
        // ...
  }

}

https://spring.io/guides/gs/async-method/


推荐阅读