Search in sources :

Example 1 with Scheduler

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();
}
Also used : Task(cn.hutool.cron.task.Task) Scheduler(cn.hutool.cron.Scheduler)

Example 2 with Scheduler

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);
            }
        });
    }
}
Also used : CronUtil(cn.hutool.cron.CronUtil) TaskExecutor(cn.hutool.cron.TaskExecutor) DefaultSystemLog(cn.jiangzeyin.common.DefaultSystemLog) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Supplier(java.util.function.Supplier) Collectors(java.util.stream.Collectors) TaskListener(cn.hutool.cron.listener.TaskListener) List(java.util.List) Task(cn.hutool.cron.task.Task) Map(java.util.Map) Scheduler(cn.hutool.cron.Scheduler) SystemClock(cn.hutool.core.date.SystemClock) JSONObject(com.alibaba.fastjson.JSONObject) ExtConfigBean(io.jpom.system.ExtConfigBean) TaskTable(cn.hutool.cron.TaskTable) TaskExecutor(cn.hutool.cron.TaskExecutor) Scheduler(cn.hutool.cron.Scheduler) TaskListener(cn.hutool.cron.listener.TaskListener)

Example 3 with Scheduler

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();
}
Also used : Task(cn.hutool.cron.task.Task) Scheduler(cn.hutool.cron.Scheduler)

Example 4 with Scheduler

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());
}
Also used : CronUtil(cn.hutool.cron.CronUtil) TaskExecutor(cn.hutool.cron.TaskExecutor) DefaultSystemLog(cn.jiangzeyin.common.DefaultSystemLog) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Supplier(java.util.function.Supplier) Collectors(java.util.stream.Collectors) TaskListener(cn.hutool.cron.listener.TaskListener) List(java.util.List) Task(cn.hutool.cron.task.Task) Map(java.util.Map) Scheduler(cn.hutool.cron.Scheduler) SystemClock(cn.hutool.core.date.SystemClock) JSONObject(com.alibaba.fastjson.JSONObject) ExtConfigBean(io.jpom.system.ExtConfigBean) TaskTable(cn.hutool.cron.TaskTable) JSONObject(com.alibaba.fastjson.JSONObject) Scheduler(cn.hutool.cron.Scheduler) TaskTable(cn.hutool.cron.TaskTable)

Aggregations

Scheduler (cn.hutool.cron.Scheduler)4 Task (cn.hutool.cron.task.Task)4 SystemClock (cn.hutool.core.date.SystemClock)2 CronUtil (cn.hutool.cron.CronUtil)2 TaskExecutor (cn.hutool.cron.TaskExecutor)2 TaskTable (cn.hutool.cron.TaskTable)2 TaskListener (cn.hutool.cron.listener.TaskListener)2 DefaultSystemLog (cn.jiangzeyin.common.DefaultSystemLog)2 JSONObject (com.alibaba.fastjson.JSONObject)2 ExtConfigBean (io.jpom.system.ExtConfigBean)2 List (java.util.List)2 Map (java.util.Map)2 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)2 Supplier (java.util.function.Supplier)2 Collectors (java.util.stream.Collectors)2