@groovy.util.logging.Slf4j @groovy.transform.CompileStatic class PokeTaskService extends java.lang.Object
Modifiers | Name | Description |
---|---|---|
class |
PokeTaskService.1 |
|
class |
PokeTaskService.2 |
Modifiers | Name | Description |
---|---|---|
static int |
CheckThreadSleepSeconds |
检查当前执行定时任务节点是否已经退出的检查线程每次检查之间的停顿秒数 |
static java.lang.String |
CurrentTaskNodeUuidRedisKey |
保存当前执行节点的 Redis key |
static java.lang.Integer |
DEFAULT_SLEEP_SECONDS |
在没有新的定时任务情况下,检查线程的睡眠时间(秒数) |
static java.time.format.DateTimeFormatter |
ScheduleTimeFormatter |
将 task 的运行时间保存到 execute record 和从 execute record 读取运行时参数并反解析为日期时候, format 的格式 |
java.util.concurrent.atomic.AtomicBoolean |
checkThreadStarted |
检查是否需要启动本节点上的任务调度线程的线程 |
static java.lang.String |
nodeUuid |
当前节点的 Uuid, 用于标识当前节点是否为当前执行定时任务的节点 |
static PriorityBlockingQueue<DynamicTaskExecuteSlot> |
plannedTaskQueue |
保存待运行的所有任务的优先级队列 |
java.util.concurrent.atomic.AtomicBoolean |
pokeThreadStarted |
任务调度线程 |
static java.util.Set<LocalDateTime> |
timeSlots |
保存所有待运行时间的 Set 用于简化将 Task 加入队列的操作 |
Type | Name and description |
---|---|
CustomiseEngineService |
customiseEngineService |
DynamicTaskDataService |
dynamicTaskDataService |
grails.core.GrailsApplication |
grailsApplication |
static java.lang.Object |
lazyInit |
RedissonService |
redissonService |
Constructor and description |
---|
PokeTaskService
() |
Type Params | Return Type | Name and description |
---|---|---|
|
void |
addToQueue(DynamicTask task) 将一个定时任务增加到队列中 |
|
DynamicTask |
getLatestTaskDefinition(DynamicTask task) |
|
void |
initTaskQueue() 初始化任务执行队列,启动主调度线程 |
|
DynamicTaskExecRecord |
manualRunTask(DynamicTask task) 手动运行某定时任务, 运行时间会设置为当前时间 本方法当前在手动运行定时任务的 action 中被调用 |
|
DynamicTaskExecRecord |
reRunTask(DynamicTaskExecRecord record) 基于Task的某条运行日志,重新运行 Task, 使用运行日志中的时间点作为触发时间 |
|
void |
removeFromQueue(DynamicTask task) 将一个定时任务的下一次执行从队列中删除 |
|
boolean |
scheduleNextExecute(DynamicTask task, TaskTriggerMethod triggerMethod) 处理下一次任务排期,会将任务以新的执行排期放入执行队列,并睡眠当前线程到该事件 |
|
void |
sleepToEarliestNextTask() 睡眠线程到下一次任务排期时间 |
|
void |
updateSchedule(DynamicTask oldTask, DynamicTask newTask) 更新某定时任务的调度信息, 用于在更新了 DynamicTask 对象的时候, 更新执行队列 |
Methods inherited from class | Name |
---|---|
class java.lang.Object |
java.lang.Object#getClass(), java.lang.Object#wait(), java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#hashCode(), java.lang.Object#equals(java.lang.Object), java.lang.Object#notifyAll(), java.lang.Object#toString(), java.lang.Object#notify() |
检查当前执行定时任务节点是否已经退出的检查线程每次检查之间的停顿秒数
保存当前执行节点的 Redis key
在没有新的定时任务情况下,检查线程的睡眠时间(秒数)
将 task 的运行时间保存到 execute record 和从 execute record 读取运行时参数并反解析为日期时候, format 的格式
检查是否需要启动本节点上的任务调度线程的线程
当前节点的 Uuid, 用于标识当前节点是否为当前执行定时任务的节点
保存待运行的所有任务的优先级队列
任务调度线程
保存所有待运行时间的 Set 用于简化将 Task 加入队列的操作
将一个定时任务增加到队列中
初始化任务执行队列,启动主调度线程
手动运行某定时任务, 运行时间会设置为当前时间 本方法当前在手动运行定时任务的 action 中被调用
task
- 手动运行的任务基于Task的某条运行日志,重新运行 Task, 使用运行日志中的时间点作为触发时间
将一个定时任务的下一次执行从队列中删除
处理下一次任务排期,会将任务以新的执行排期放入执行队列,并睡眠当前线程到该事件
task
- 处理排期的任务triggerMethod
- 触发方式,如果触发方式为手动,则不会处理排期, 执行线程会直接退出睡眠线程到下一次任务排期时间
更新某定时任务的调度信息, 用于在更新了 DynamicTask 对象的时候, 更新执行队列
Groovy Documentation