定时任务调度Quartz.NET

你想让你的应用程序在凌晨一点自动干一些别的事情吗?或者说没隔一段时间来执行一些任务 使用Quartz.NET

下面用最短的时间带你入门 并可以应用各种定时场景

首先你要在你的项目中导入需要用到的包 可以通过Nuget安装Quartz.NET

先介绍三个名词 调度者(IScheduler) 、工作(IJobDetail)、触发器(ITrigger)

你要先创建一个调度者 , 一个工作, 一个触发器

我们也可以定义多个工作 ,多个触发器 ,让我们的调度者在触发器满足条件的时候去执行我们的工作

//实例化一个调度者

IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();  

//启动

scheduler.Start();     

//定义我们的任务 HelloJob这个类要实现IJob接口 在里面写我们要做的工作                   

IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity("job1", "group1")
.Build();

class HelloJob : IJob
    {

        public void Execute(IJobExecutionContext context)
        {
            Console.WriteLine("123");
        }
    }

接下来我们要定义一下触发器 让我们触发器在符合条件的时候去执行我们的Job

 /*
            ITrigger trigger = TriggerBuilder.Create()
                    .WithIdentity("trigger1", "group1")
                    .StartNow()
                    .WithSimpleSchedule(x => x
                        .WithIntervalInSeconds(5) //每隔5秒执行一次
                        .RepeatForever())
                    .Build();
 //*/
 /*
            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("trigger1", "group1").WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(18, 44))//每天的18点44分执行一次
                .ForJob(job)
                .Build();
//*/
 /*
            TimeSpan offset = DateTime.Now - DateTime.UtcNow;
            ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create()
                .WithIdentity("trigger1", "group1")
                .StartAt(new DateTimeOffset(2015, 11, 5, 18, 53, 59, offset)) // 指定一个时间去执行不重复  比如会议前两天给用户发送邮件
                .ForJob("job1", "group1")
                .Build();
 //*/
/*
            ITrigger trigger = TriggerBuilder.Create()
                 .WithIdentity("trigger1", "group1")
                .WithSimpleSchedule(x => x
                    .WithIntervalInSeconds(2)
                    .RepeatForever())
                .EndAt(DateBuilder.DateOf(19, 2, 1))//立刻执行 两秒钟一次 指定时间停止
                .Build();
 //*/

上面这四种触发器可以应用在不同的场景中

//调度工作

scheduler.ScheduleJob(job, trigger);

时间: 2024-10-06 23:07:40

定时任务调度Quartz.NET的相关文章

Spring整合Quartz实现定时任务调度

一. 核心类 1. Job: 表示一个工作, 具体的业务处理都在这里. 2. JobDetail: 表示一个具体的可执行的调度程序. 3. Trigger: 用于调度参数的配置(什么时候去调用Job). 4. Scheduler: 表示一个调度容器, 容器中有一个线程池, 用来并行调度执行每个作业, 一个调度容器中可以注册多个JobDetail和Trigger. 二. 整合spring 1. 代码结构图: 2. applicationContext.xml <?xml version="1

windows 服务实现定时任务调度(Quartz.Net)

我们通常在一些情况下需要软件具有一个自动执行某些任务的功能,但是又不希望直接启动软件,或者每次都要手动的来启动软件,这时我们可可以考虑到windows服务了. 首先创建一个windows服务项目(详细信息请参阅:C#创建Windows Service(Windows 服务)基础教程) 在创建好的项目中点击“单击此处切换到代码视图”切换到代码 我们主要关注一下两个方法: • OnStart – 控制服务启动 • OnStop – 控制服务停止 例: 1 public partial class S

项目一:第十四天 1.在realm中动态授权 2.Shiro整合ehcache 缓存realm中授权信息 3.动态展示菜单数据 4.Quartz定时任务调度框架—Spring整合javamail发送邮件 5.基于poi实现分区导出

1 Shiro整合ehCache缓存授权信息 当需要进行权限校验时候:四种方式url拦截.注解.页面标签.代码级别,当需要验证权限会调用realm中的授权方法   Shiro框架内部整合好缓存管理器,整合ehcache环境,只需要配置即可.     <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>

一文揭秘定时任务调度框架quartz

之前写过quartz或者引用过quartz的一些文章,有很多人给我发消息问quartz的相关问题, quartz 报错:java.lang.classNotFoundException quartz源码分析之深刻理解job,sheduler,calendar,trigger及listener之间的关系 Quartz框架多个trigger任务执行出现漏执行的问题分析--转 quartz集群调度机制调研及源码分析---转载 分布式定时任务调度系统技术选型--转 趁着年底比较清闲,把quartz的问题

Hosted Services+Quartz实现定时任务调度

背景 之前.net core使用quartz.net时,总感觉非常变扭,百度和谷歌了N久都没解决以下问题,造成代码丑陋,非常不优雅: 1.项目启动时,要立刻恢复执行quartz.net中的任务 2.quartz.net中的Job任务无法使用ioc注入,要额外写一套 直到最近看到这篇文章.Net Core小技巧 - Hosted Services + Quartz实现定时任务调度,终于解决了我的问题,特此记录一下 前后代码对比 Program.cs 前 查看详细内容 public class Pr

quartz 定时任务调度管理器

本项目使用的是spring-quartz 以下配置可以开启多个已知定时任务 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:ta

浅谈Quartz定时任务调度

原文:浅谈Quartz定时任务调度 一  开发概述 对于具有一定规模的大多数企业来说,存在着这样一种需求:存在某个或某些任务,需要系统定期,自动地执行,然而,对大多数企业来说,该技术的实现,却是他们面临的一大难点和挑战.  对于大部分企业来说,实现如上功能,挑战在哪里? 挑战一:如何做一个自动服务的系统? 是从0到1开发(费时费力花钱,还不一定开发成功,即使开发成功,也未必好用),还是购买第三方服务(花钱). 挑战二:如何实现复杂的"定期规则"? 对于简单的定期规则,可以借助于wind

定时任务调度系统设计

目前定时任务调度系统quartz比较出名,quartz也有集群方案,但把所有任务集中一起就构成了分布式任务系统,耦合性比较高,而且比较重. 我利用zookeeper的特性,设计了一个轻量级的定时任务调度系统. 总体的架构: 总体思路: 1.前端admin负责任务的管理,包含添加任务,删除任务,修改任务到zookeeper(类似数据库). 2. 后台服务器从zookeeper中获取各自的任务列表. 3. 定时扫描各自的任务列表,任务执行时发送http请求给业务方. 4. 业务方接受到http请求进

spring timetask 定时任务调度

作者:Garry1115 定时任务调度即在设置的特定时间执行特定的任务,不需要人工干预. spring timertask spring 自身所带定时任务类,不需要引入第三方jar包,使用方式如下: EmailReportTask.java package com.zwx.core; import java.util.TimerTask; public class EmailReportTask extends TimerTask{ @Override public void run() { S