0%

spring-task

Task

TaskConfig

task_config 的属性如下

  • 任务id
  • 任务名称
  • 任务描述
  • 任务超时
  • 任务分组
  • 任务优先级

TaskRecord

task_record 的属性如下

  • 记录id
  • 任务id
  • 任务参数
  • 任务结果
  • 任务状态
  • 任务创建时间
  • 任务开始时间
  • 任务结束时间
  • 任务耗时

TaskState

task_state 的属性如下

  • 已创建 10
  • 运行中 20
  • 已取消 30
  • 已中断 40
  • 已成功 50
  • 已失败 60
  • 已超时 70

ps:任务在 运行前 可以被 取消 ,在 运行时 只能被 中断

JavaTask

参考java并发篇

NormalTask

SyncTask

AsyncTask

ScheduledTask

DelayedTask

TimedTask

SpringTask

NormalTask

SyncTask

AsyncTask

Invalid

ps:@Async是通过AOP实现的,所以失效的场景包含AOP失效的场景

ScheduledTask

DelayedTask

延时任务的实现方案

  • 线程方案
    • Thread.sleep:会导致线程暂停,效率低,不推荐
  • 线程池方案
    • ScheduledExecutorService.schedule(Runnable command, long delay, TimeUnit unit)
    • TaskScheduler.schedule(Runnable task, Instant startTime)
  • 队列方案
    • PriorityBlockingQueue + 轮询:效率低,不推荐
    • DelayQueue
    • MQ延时消息

ps:推荐使用MQ延时消息,因为MQ延时消息支持任务持久化,其他方案不支持
TODO:需要确认 @Scheduled 只配置 initialDelay 参数是否也能实现延时任务???

TODO:@Scheduled支不支持延时任务

TimedTask

SpringCloudTask

DistributedTask

Quartz

XXX-Job

Elastic-Job

只想买包辣条