任务异步执行的优化疑问

有个功能是创建任务后存储到任务表:用户在界面上填写表单提交,调用创建任务接口,存储到任务表。
然后后台有一个定时任务每分钟扫描任务表,每次获取10个未执行的任务,执行完毕后再获取10个,如果没有结束,等1分钟后继续这种操作。

我在想,创建任务后直接用 @async 异步执行不就可以了吗?另外搞一个定时任务去扫描是不是有点多余?还是说有什么东西没考虑到的,必须要用定时扫描,比如@async 异步是内存队列,怕内存占用太多?

  • 使用 @Async 注解确实可以实现异步执行任务,但是它只是将任务提交到一个线程池中异步执行,并不会保存任务状态。如果你需要保存任务状态,以便在后续的定时任务中进行处理,那么你需要将任务保存到任务表中,并在定时任务中从任务表中获取任务执行。
  • 此外,使用定时任务的好处是可以控制任务的执行频率和执行时间,以避免任务过多或者任务执行时间过长导致系统负载过高。如果你使用 @Async 异步执行任务,可能会导致任务过多或者任务执行时间过长,从而影响系统的稳定性和性能。
  • 因此,在设计任务异步执行的方案时,需要综合考虑任务的性质、任务的数量和系统的负载情况,选择合适的方案来实现。如果任务数量较少,并且任务执行时间较短,可以考虑使用 @Async 异步执行任务;如果任务数量较多或者任务执行时间较长,建议使用定时任务来控制任务的执行。

还是需要任务表的,不仅仅考虑当前的功能,还要考虑未来的功能,如果用async如果报错或者更新一些信息都是不可维护的