.NET中Quartz任务调度器的简单应用实例

1.首先从NuGet中安装Quartz,安装最新版本就OK

2.新建一个Job类实现Quart中的IJob接口用于执行业务逻辑,代码如下:

    class CheckUpdateJob : IJob
    {

        public async Task Execute(IJobExecutionContext context)
        {
            //在此处实现业务
        }
    }

3.新建一个任务执行类用于启动任务,代码如下:

    class JobController
    {
        //调度器
        IScheduler scheduler;
        //调度器工厂
        ISchedulerFactory factory;
        //执行时间间隔
        private int checkInternal = int.Parse(ConfigurationManager.AppSettings["CheckInternal"]);
        public async Task Start()
        {
            factory = new StdSchedulerFactory();
            scheduler = await factory.GetScheduler();//创建一个任务
            IJobDetail jobCheck = JobBuilder.Create<CheckUpdateJob>().WithIdentity("check", "other").Build();
            //创建一个触发器
            ITrigger checkTrigger = TriggerBuilder.Create()
               .WithIdentity("check", "other")
               .WithSchedule(SimpleScheduleBuilder.Create().WithIntervalInSeconds(checkInternal).RepeatForever())
               .StartNow()
               .Build();
            //把任务和触发器加入调度器中
            await scheduler.ScheduleJob(jobCheck, checkTrigger);

            //开始执行
            await scheduler.Start();
        }
    }

对于标黄色部分做简单说明

CheckUpdateJob:毫无疑问就是你的Job类。从源码里面看必须是需要实现IJob接口的类,源码如图:

check:自定义的Job别名,当有很多的Job需要执行的时候,可以使用别名区分。

other:自定义分组别名,当你有多Job的时候可以把Job进行分组,例如:订单,数据清理等;当你需要对Job管理的时候便会派上用场。

ITrigger 中的check,other道理同上

checkInternal:这个参数为轮询间隔秒数,这里我只做个简单间隔秒数轮询方式执行Job,其内置了丰富的方式。比如:每月的第几号,每周的星期几,上午或者下午时间点等

其他更多的应用可自行度娘或者看官方文档吧!

4.最后调用Start()即可,代码如下:

        static void Main(string[] args)
        {
            JobController controller = new JobController();
            var t = controller.Start();
            t.Wait();
            Console.Read();
        }

  

原文地址:https://www.cnblogs.com/wuzhixiong/p/9996822.html

时间: 2024-10-07 04:46:35

.NET中Quartz任务调度器的简单应用实例的相关文章

Spring中Quartz调度器的使用

一.Quartz的特点 * 按作业类的继承方式来分,主要有以下两种: 1.作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式 2.作业类不继承org.springframework.scheduling.quartz.QuartzJobBean类的方式 注:个人比较推崇第二种,因为这种方式下的作业类仍然是POJO. * 按任务调度的触发时机来分,主要有以下两种: 1.每隔指定时间则触发一次,对应的调度器为org.springf

Quartz任务调度器

背景:              近期项目中遇到跨区调拨商品的需求,比如A区和B区,需要判断A区或者B区某种sku是否需要从对方库调拨商品来补充货源,避免因缺失商品而出现订单延误,影响销售和对用户产生不良影响. 问题:             数据量庞大,如果当查看的时候去获取数据,那么会严重影响系统的性能,甚至导致数据库和应用服务器无法响应. 解决方案:            规定在某个时间点,最好是在晚上12点时系统自动获取需要调拨的数据,然后将数据存储到数据库中.晚上12点,用户访问量和系

Quartz任务调度框架的简单应用

首先创建Maven项目并添加依赖 1 <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --> 2 <dependency> 3 <groupId>org.quartz-scheduler</groupId> 4 <artifactId>quartz</artifactId> 5 <version>2.2.3</version>

Quartz任务调度2

注意: 不同的版本的jar包,具体的操作不太相同,但是思路是相同的:比如1.8.6jar包中,JobDetail是个类,直接通过构造方法与Job类关联.SimpleTrigger和CornTrigger是类:在2.2.1jar包中,JobDetail是个接口,SimpleTrigger和CornTrigger是接口 mavan工程引入的包: ? 1 2 3 4 5 6 7 8 9 10 11 <!-- 任务调度器相关包 -->     <dependency>           

Quartz任务调度

注意: 不同的版本的jar包,具体的操作不太相同,但是思路是相同的:比如1.8.6jar包中,JobDetail是个类,直接通过构造方法与Job类关联.SimpleTrigger和CornTrigger是类:在2.2.1jar包中,JobDetail是个接口,SimpleTrigger和CornTrigger是接口 mavan工程引入的包: <!-- 任务调度器相关包 --> <dependency>             <groupId>org.quartz-sc

EJB学习笔记六(EJB中的拦截器)

 1.前言 听到拦截器,估计都不陌生,尤其是在Servlet规范中,充分应用了拦截器的概念.EJB3也提供了拦截器的支持,本质上是轻量级的AOP实现,拦截器可以将多个业务方法中的通用逻辑从业务方法中抽离出来,放在拦截器中实现,从而实现极好的代码复用. 2.EJB中的拦截器 Spring中的AOP实现提供了@Before.@AfterReturning.@AfterThrowing等大量的Annotation,这些注解用于定义功能丰富的增强处理,可是在EJB的拦截器没有打算实现完整的AOP ,只是

【Java】如何使用Eclipse中的调试器

只要有一点编程基础的人都程序出错或者得不到我们想要的结果的时候,我们要进行调试,但是不知道有多少人还是与我一样,喜好在某些地方用System.out.println();去打印某些变量来进行观测,C语言则喜欢用printf,C++则是cout,这种方法用多了,永远不知道调试器到底怎么使用了.其实,Eclipse中的调试器很简单,非常容易使用.而且,对于打印某些变量的方法,在一些大型的程序,图形编程界面.WEB编程,你就开始懵了.程序为何出错还没想出来,又要开始想怎么打印变量.简直烦死了. 为了讲

C#中Quartz的简单易懂定时任务实现

作为一个优秀的开源调度框架,Quartz 具有以下特点: 强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求: 灵活的应用方式,例如支持任务和调度的多种组合方式,支持调度数据的多种存储方式: 分布式和集群能力,Terracotta 收购后在原来功能基础上作了进一步提升. 另外,作为 Spring 默认的调度框架,Quartz 很容易与 Spring 集成实现灵活可配置的调度功能. quartz调度核心元素: Scheduler:任务调度器,是实际执行任务调度的控制器.在spr

任务调度器quartz的使用

1.quartz的获取. 可參照:Quartz任务调度模型实例 2.开发思路: 要使用定时器quartz.先弄清楚三个概念:调度器.任务.触发器.开发也是依照这三个方面来开发, 1>写一个Job的实现类.里面是你自己要完毕的业务逻辑: 2>写Trigger的实现类,主要有SimpleTrigger和CronTrigger这两个子类.来决定调度方案: 当仅需触发一次或者以固定时间间隔周期运行,SimpleTrigger是最适合的选择: 而CronTrigger则能够通过Cron表达式定义出各种复