use of cn.hutool.cron.Scheduler in project Jpom by dromara.
the class CronUtils method add.
/**
* 添加任务 已经存在则不添加
*
* @param id 任务ID
* @param cron 表达式
* @param supplier 创建任务回调
*/
public static void add(String id, String cron, Supplier<Task> supplier) {
Scheduler scheduler = CronUtil.getScheduler();
Task task = scheduler.getTask(id);
if (task != null) {
return;
}
scheduler.schedule(id, cron, supplier.get());
//
CronUtils.start();
}
use of cn.hutool.cron.Scheduler in project Jpom by dromara.
the class CronUtils method start.
/**
* 开始
*/
public static void start() {
boolean matchSecond = ExtConfigBean.getInstance().getTimerMatchSecond();
// 开启秒级
CronUtil.setMatchSecond(matchSecond);
//
Scheduler scheduler = CronUtil.getScheduler();
//
boolean started = scheduler.isStarted();
if (started) {
return;
}
synchronized (CronUtils.class) {
started = scheduler.isStarted();
if (started) {
return;
}
CronUtil.start();
scheduler.addListener(new TaskListener() {
@Override
public void onStart(TaskExecutor executor) {
TaskStat taskStat = TASK_STAT.computeIfAbsent(executor.getCronTask().getId(), s -> new TaskStat());
taskStat.lastExecuteTime = SystemClock.now();
taskStat.executeCount++;
}
@Override
public void onSucceeded(TaskExecutor executor) {
TaskStat taskStat = TASK_STAT.computeIfAbsent(executor.getCronTask().getId(), s -> new TaskStat());
taskStat.succeedCount++;
}
@Override
public void onFailed(TaskExecutor executor, Throwable exception) {
TaskStat taskStat = TASK_STAT.computeIfAbsent(executor.getCronTask().getId(), s -> new TaskStat());
taskStat.failedCount++;
DefaultSystemLog.getLog().error("定时任务异常", exception);
}
});
}
}
use of cn.hutool.cron.Scheduler in project Jpom by dromara.
the class CronUtils method upsert.
/**
* 添加任务、自动去重
*
* @param id 任务ID
* @param cron 表达式
* @param task 任务作业
*/
public static void upsert(String id, String cron, Task task) {
Scheduler scheduler = CronUtil.getScheduler();
Task schedulerTask = scheduler.getTask(id);
if (schedulerTask != null) {
CronUtil.remove(id);
}
// 创建任务
CronUtil.schedule(id, cron, task);
//
CronUtils.start();
}
use of cn.hutool.cron.Scheduler in project Jpom by dromara.
the class CronUtils method list.
/**
* 获取任务列表
*
* @return list
*/
public static List<JSONObject> list() {
Scheduler scheduler = CronUtil.getScheduler();
TaskTable taskTable = scheduler.getTaskTable();
List<String> ids = taskTable.getIds();
return ids.stream().map(s -> {
TaskStat taskStat = TASK_STAT.get(s);
JSONObject jsonObject = new JSONObject();
jsonObject.put("taskId", s);
jsonObject.put("cron", scheduler.getPattern(s).toString());
if (taskStat != null) {
jsonObject.put("executeCount", taskStat.executeCount);
jsonObject.put("failedCount", taskStat.failedCount);
jsonObject.put("succeedCount", taskStat.succeedCount);
jsonObject.put("lastExecuteTime", taskStat.lastExecuteTime);
}
return jsonObject;
}).collect(Collectors.toList());
}
Aggregations