Quartz任务调度框架

Quartz是一个任务调度框架(库),它几乎可以集成到任何应用系统中。术语”job schedule”似乎为不同的人提供了不同的想法。作业调度是负责执行(或通知)其他软件组件在预定时间执行的服务组件。介绍一下简单使用

1.导入Quartz jar包(若Maven项目,则pom.xml文件中引入quartz依赖)

2.Quartz属性配置文件:quartz.properties

#调度程序名称
org.quartz.scheduler.instanceName = DefaultScheduler
#初始化Id
org.quartz.scheduler.instanceId = auto
#线程池
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool

3.编写Job类,实现org.quartz.Job接口

package com.ErpCoreWeb.Finance.importAcct;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class Hello implements Job{

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("调用线程:hello任务执行---"+sdf.format(new Date()));
    }
}

4.使用job、trigger、schedule调用定时任务

引入静态方法

import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;
package com.ErpCoreWeb.Finance.importAcct;

import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzTest {
    public static void main(String[] args) {
        try {
            // 从调度程序工厂获取一个调度程序的实例
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
            System.out.println(scheduler.getSchedulerName());

            // 实例创建是在scheduler安排任务触发执行时创建的
            JobDetail job = newJob(Hello.class)
                    .withIdentity("job1","group1")
                    .build();
            // 声明一个触发器,现在就执行(schedule.start()方法开始调用的时候执行);并且每间隔2秒就执行一次
            Trigger trigger = newTrigger()
                    .withIdentity("trigger1","group1")
                    .startNow()
                    .withSchedule(simpleSchedule()
                            .withIntervalInSeconds(2)
                            .repeatForever())
                    .build();
            // 告诉quartz使用定义的触发器trigger安排执行任务job
            scheduler.scheduleJob(job, trigger);
            // 启动任务调度程序,内部机制是线程的启动
            scheduler.start();
            // 关闭任务调度程序,如果不关闭,调度程序schedule会一直运行着
            //scheduler.shutdown();

        } catch (Exception e) {
            // TODO: handle exception
        }
    }
}

每隔两秒钟触发一次时间,所以:

这里写图片描述

这是一个关于定时任务简单的demo
在项目中需要导账功能需要使用到定时任务,

配置scheduler.xml文件

<schedule>
    <job>
        <name>ImportAcctJob</name>
        <group>group1</group>
        <description>定时导账查询</description>
        <job-class>com.ErpCoreWeb.Finance.importAcct.ImportAcctJob</job-class>
    </job>
    <trigger>
        <cron>
            <name>ImportAcctJob-trigger</name>
            <job-name>ImportAcctJob</job-name>
            <job-group>group1</job-group>
            <cron-expression>0 0/5 * * * ?</cron-expression>
        </cron>
    </trigger>
</schedule>

在com.ErpCoreWeb.Finance.importAcct.ImportAcctJob类实现implements Job接口,然后就和我们上面的实例是一样的,如果定时任务多的话一般配合多线程使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值