• Jfianl框架定时器使用配置


    Jfianl 自2.3版本后就整合了定时器到框架中,赞一个;

    下面我来总结下自己使用cron4j到达定时效果的经验,不足之处还请见谅;

    Cron4jPlugin是作为JFinal的Plugin而存在的,所以使用时需要在JFinalConfig中配置,如下是代码示例:

    public void configPlugin(Plugins me) {
    
    	    me.add(new Cron4jPlugin(PropKit.use("fcms_config_dev.txt")));//cms_config_dev.txt这是我的配置文件位置,为了方便管理,我把Cron4jPlugin的配置写在了那里
    }
    cms_config_dev.txt相关配置:我这边有两个定时任务,责需在cron4j添加名称用“,”隔开;
    # cron4j 任务调度配置  ------------------------------------------
    cron4j=pvUpdate,fileUpdate //cront4j是所谓的配置名称:configName,可以随便取名,这个名称在创建Cron4jPlugin对象时会被用到,如果创建Cron4jPlugin对象时不提供名称则默认值为 "cron4j
    pvUpdate.cron=0 * * * * //.cron指该task的cron表达式
    pvUpdate.class=com.daymooc.fcms.common.pageview.PageViewUpdateTask //要调度的目标java类
    //pvUpdate.deamon=true //指被调度的任务线程是否为守护线程
    pvUpdate.enable=true //指该task是开启还是停用,这个配置不是必须的,可以省略,省略时默认表示开启 fileUpdate.cron=*/10 * * * * fileUpdate.class=com.daymooc.fcms.common.itemFileTask.itemFileTask fileUpdate.enable=true

        请注意,cron 表达式最多只允许五部分,每部分用空格分隔开来,这五部分从左到右依次表示分、时、天、月、周,其具体规则如下:

    • 分 :从 0 到 59

    • 时 :从 0 到 23

    • 天 :从 1 到 31,字母 L 可以表示月的最后一天

    • 月 :从 1 到 12,可以别名:jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov" and "dec"

    • 周 :从 0 到 6,0 表示周日,6 表示周六,可以使用别名: "sun", "mon", "tue", "wed", "thu", "fri" and "sat"

        如上五部分的分、时、天、月、周又分别支持如下字符,其用法如下:

    • 数字 n:表示一个具体的时间点,例如 5 * * * * 表示 5 分这个时间点时执行

    • 逗号 , :表示指定多个数值,例如 3,5 * * * * 表示 3 和 5 分这两个时间点执行

    • 减号 -:表示范围,例如 1-3 * * * * 表示 1 分、2 分再到 3 分这三个时间点执行

    • 星号 *:表示每一个时间点,例如 * * * * * 表示每分钟执行

    • 除号 /:表示指定一个值的增加幅度。例如 */5表示每隔5分钟执行一次(序列:0:00, 0:05, 0:10, 0:15 等等)。再例如3-18/5 * * * * 是指在从3到18分钟值这个范围之中每隔5分钟执行一次(序列:0:03, 0:08, 0:13, 0:18, 1:03, 1:08 等等)。

    调度的目标java类: 实现ITask类
    package com.daymooc.fcms.common.itemFileTask;
    
    import com.daymooc.fcms.common.model.ItemFile;
    import com.daymooc.fcms.itemFile.ItemFileService;
    import com.jfinal.kit.PropKit;
    import com.jfinal.plugin.cron4j.ITask;
    import org.apache.commons.lang.StringUtils;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.nio.charset.Charset;
    import java.util.Date;
    import java.util.List;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    
    /**
     * @ClassName itemFileTask
     * @Description TODO 定时轮询附件表 添加查询关键字
     * @Author mld
     * @Date 2019/4/10 0010、下午 5:04
     */
    public class itemFileTask  implements ITask {
        private ItemFileService itemFileService = new ItemFileService();
    
        @Override
        public void stop() { //任务调度结束时执行
            System.out.println("定时结束轮询附件表"+new Date());
        }
    
        @Override
        public void run() { //任务调度开始时执行
            System.out.println("定时开始轮询附件表"+new Date());
        }
    
    }

    完成,运行config文件;

     

    参考文献:

    https://www.jfinal.com/doc/9-2

      

  • 相关阅读:
    开始学习
    C# Excel批注“哪种开发语言最好”
    [LeetCode] Longest Substring Without Repeating Characters
    (Android 即时通讯) [悬赏],不管是谁发现一个漏洞奖励人民币1000元!
    10进制转16进制
    【2】按照Django官网,创建一个web app 创建app/创建相应的数据库表
    HTML5新特性之WebSocket
    Drupal 7模板(主题钩子)的建议
    检測磁盘驱动的健康程度SMART
    BZOJ2527: [Poi2011]Meteors
  • 原文地址:https://www.cnblogs.com/mlorct/p/10696220.html
Copyright © 2020-2023  润新知