目录
功能简介
这个功能主要是基于quartz
的任务调度,主线程开始执行时,会从task
表中读取状态是未开始(0)
和执行中(1)
的任务,读取到任务之后,先将任务状态存入ConcurrentHashMap
中,用key
记录Task
信息,value
为true(因为仅仅用到ConcurrentHashMap
的key
存Task
保证任务去重作用,所以value
可随意设置),再封装成一个定时执行的job
提交到quartz
中。
此后,定时执行的Job
就会根据任务的定时间隔不断根据这些任务的id
到send_data
表查询这些任务要发送的数据。
当发送的数据达到task
的总量时,这个任务的信息就会先从ConcurrentHashMap
中删除,同时也会根据任务的id将定时任务的job
从quartz
中drop
掉。
这里我们列举出为task
表封装的类,可以看到顶层设计仅仅涉及任务id
和任务名称,而任务具体调度详情记录到其成员变量TaskInfo
中:
@Data
public class Task {
/**
* 任务号
*/
private Integer id;
/**
* 任务名称
*/
private String taskName;
/**
* 任务详情
*/
private TaskInfo ta