Quartz.net 定时计划使用
新建解决方案和工程Quartz.net
使用Power Shell 命令 Install-Package Quartz 导入Quartz.net程序集
新建一个计划TestJob
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Quartz.net
- {
- public class TestJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- try
- {
- Console.WriteLine("执行计划...");
- }
- catch (Exception)
- {
- throw;
- }
- }
- }
- }
从程序中控制计划时间的用法
- using Quartz.Impl;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Quartz.net
- {
- class Program
- {
- static void Main(string[] args)
- {
- // 如果配置了Log4Net 可取消注释
- //Common.Logging.LogManager.Adapter = new Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter { Level = Common.Logging.LogLevel.Info };
- // 从工厂里获取调度实例
- IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
- scheduler.Start();
- // 创建一个任务
- IJobDetail job = JobBuilder.Create<TestJob>()
- .WithIdentity("MyJob", "group1")
- .Build();
- // 创建一个触发器
- ITrigger trigger = TriggerBuilder.Create()
- .WithIdentity("trigger1", "group1")
- .StartNow()
- .WithSimpleSchedule(x => x
- .WithIntervalInSeconds() // 每10秒执行一次
- .RepeatForever()) // 无限次执行
- .Build();
- // 每天执行的触发器
- ITrigger t = TriggerBuilder.Create()
- .WithIdentity("myTrigger", "group2")
- .ForJob(job)
- .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(, )) // 每天9:30执行一次
- //.ModifiedByCalendar("myHolidays") // but not on holidays 设置那一天不知道
- .Build();
- // 每天执行的将触发器换成天的就可以了
- scheduler.ScheduleJob(job, trigger);
- }
- }
- }
从配置文件设置定时计划的用法,先看App.config
- <?xml version="1.0" encoding="utf-8" ?>
- <configuration>
- <configSections>
- <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- </configSections>
- <quartz>
- <add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler" />
- <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
- <add key="quartz.threadPool.threadCount" value="10" />
- <add key="quartz.threadPool.threadPriority" value="2" />
- <add key="quartz.jobStore.misfireThreshold" value="60000" />
- <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
- <!--******************************Plugin配置********************************************* -->
- <add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz" />
- <add key="quartz.plugin.xml.fileNames" value="~/quartz_jobs.xml"/>
- </quartz>
- <startup>
- <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
- </startup>
- </configuration>
再看quartz_jobs.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- This file contains job definitions in schema version 2.0 format -->
- <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
- <processing-directives>
- <overwrite-existing-data>true</overwrite-existing-data>
- </processing-directives>
- <schedule>
- <!--任务-->
- <job>
- <!--任务名称,同一个group中多个job的name不能相同-->
- <name>TestJob</name>
- <!--任务分组-->
- <group>sampleGroup</group>
- <!--任务描述-->
- <description>Sample job for Quartz Server</description>
- <!--任务类型,任务的具体类型及所属程序集-->
- <job-type>Quartz.NETConfig.TestJob, Quartz.NETConfig</job-type>
- <durable>true</durable>
- <recover>false</recover>
- </job>
- <!--任务触发器-->
- <trigger>
- <!--简单任务的触发器,可以调度用于重复执行的任务-->
- <simple>
- <!--触发器名称,同一个分组中的名称必须不同-->
- <name>sampleSimpleTrigger</name>
- <!--触发器组-->
- <group>sampleSimpleGroup</group>
- <!--描述-->
- <description>Simple trigger to simply fire sample job</description>
- <!--要调度的任务名称,该job-name必须和对应job节点中的name完全相同-->
- <job-name>TestJob</job-name>
- <!--调度任务(job)所属分组,该值必须和job中的group完全相同-->
- <job-group>sampleGroup</job-group>
- <!--任务开始时间-->
- <start-time>2012-04-01T08:00:00+08:00</start-time>
- <misfire-instruction>SmartPolicy</misfire-instruction>
- <!--任务执行次数 -1 为无限次执行-->
- <repeat-count>-1</repeat-count>
- <!--任务触发间隔(毫秒)-->
- <repeat-interval>10000</repeat-interval>
- <!--每3秒中执行一次-->
- </simple>
- </trigger>
- <job>
- <!--任务名称,同一个group中多个job的name不能相同-->
- <name>StatisticsJob</name>
- <!--任务分组-->
- <group>sampleGroup1</group>
- <!--任务描述-->
- <description>Sample job for Quartz Server</description>
- <!--任务类型,任务的具体类型及所属程序集-->
- <job-type>Quartz.NETConfig.StatisticsJob, Quartz.NETConfig</job-type>
- <durable>true</durable>
- <recover>false</recover>
- </job>
- <trigger>
- <cron>
- <name>TriggerJob001</name>
- <group>ProjectJobs</group>
- <job-name>StatisticsJob</job-name>
- <job-group>sampleGroup1</job-group>
- <!--秒 分 时 日(星期) 月 年-->
- <cron-expression>0/3 * * * * ?</cron-expression>
- </cron>
- </trigger>
- <!--每天0点定时执行 0 0 0/1 * * ? -->
- <job>
- <name>DefaultJob</name>
- <group>sampleGroup2</group>
- <description>Sample job for Quartz Server</description>
- <job-type>Quartz.NETConfig.DefaultJob, Quartz.NETConfig</job-type>
- <durable>true</durable>
- <recover>false</recover>
- </job>
- <trigger>
- <cron>
- <name>TriggerJob002</name>
- <group>ProjectJobs</group>
- <job-name>DefaultJob</job-name>
- <job-group>sampleGroup2</job-group>
- <cron-expression>0 0 0/1 * * ?</cron-expression>
- </cron>
- </trigger>
- </schedule>
- </job-scheduling-data>
用配置调比较简单
- // 从工厂里获取调度实例
- IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
- scheduler.Start();
配置的任务也没什么
- public class DefaultJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- try
- {
- // 开始统计数据
- Console.WriteLine("开始统计数据...");
- }
- catch (Exception)
- {
- throw;
- }
- }
- }
- public class StatisticsJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- Console.WriteLine("表达式执行调度任务...");
- }
- }
- public class TestJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- Console.WriteLine("执行调度任务");
- }
- }
以上就是定时计划的用法,可参考文档 http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/more-about-triggers.html
Quartz.net 定时计划使用的更多相关文章
- 用abp vNext快速开发Quartz.NET定时任务管理界面
今天这篇文章我将通过实例代码带着大家一步一步通过abp vNext这个asp.net core的快速开发框架来进行Quartz.net定时任务调度的管理界面的开发.大伙最好跟着一起敲一下代码,当然源码 ...
- spring quartz分布式任务计划
spring quartz分布式任务计划 环境: 通过maven管理的spring mvc工程,且已经成功连接数据库. 数据库表结构 /*Table structure for table `qrtz ...
- Oracle定时计划快速使用
Oracle定时计划快速使用 前言: SQL Server中有相关的定时计划,可以直接打开sql server 的任务管理器进行配置,可以方便.快速实现定时执行相应任务.相应的Oracle也有对应的定 ...
- MySQL架构优化:定时计划任务与表分区
转自: MySQL架构优化实战系列3:定时计划任务与表分区 - 今日头条(TouTiao.com)http://toutiao.com/a6304736482361049345/?tt_from=mo ...
- Windows定时计划执行Python
先看下定时执行的py文件 #coding:gbk from selenium import webdriver import time,os driver = webdriver.PhantomJS( ...
- Linux定时计划(crontab)使用说明
一.设置定时计划步骤 第一步,编缉计划文件:crontab -e 第二步,在文件中写入计划,格式如:minute hour day month week command.如0 8 * * * sh / ...
- 【Oracle】Windows定时计划每天备份数据库
脚本 OracleBakEveryDay.bat @echo off echo ================================================ echo Window ...
- spring和Quartz的定时功能
一:前沿 最近在做一个定时的功能,就是在一定时间内查询订单,然后告诉用户未付款,已付款等消息通知,而且要做集群的功能,这个集群的功能是指,我部署两套代码,其中一个定时的功能在运行,另外一个就不要运行. ...
- Hosted Services+Quartz实现定时任务调度
背景 之前.net core使用quartz.net时,总感觉非常变扭,百度和谷歌了N久都没解决以下问题,造成代码丑陋,非常不优雅: 1.项目启动时,要立刻恢复执行quartz.net中的任务 2.q ...
随机推荐
- 网络资源(2) - Maven视频
2014_08_23 http://v.youku.com/v_show/id_XNDE2NzM0Nzk2.html Maven最佳实践,公司真实环境实践-私服最佳实践 2014_08_24 http ...
- Swift——(三)Swift神奇的下划线
在Swift在.有许多神奇的下划线,在这里,我们将看到神奇的汇总,我希望能够帮助其他很多学习Swift朋友. @Author: twlkyao转载或者引用请保留此行. 1.格式化数字字面量 通 ...
- 队列 <queue>
STL: 队列中pop完成的不是取出最顶端的元素,而是取出最低端的元素.也就是说最初放入的元素能够最先被取出(这种行为被叫做FIFO:First In First Out,即先进先出). queue: ...
- sscanf()函数的用法
来自:http://blog.csdn.net/tigerjibo/article/details/6442151 sscanf 名称: sscanf() - 从一个字符串中读进与指定格式相符的数据. ...
- oracle_解锁表_解锁用户
1.解锁用户 以dba身份登录 sqlplus / as sysdba alter user scott account unlock; 2.解锁表 alter system kill ...
- SQL代理执行EXE可执行程序
原文:SQL代理执行EXE可执行程序 1.如果没有启用xp_cmdshell安全配置是不可以使用的-- 启用xp_cmdshellEXEC sp_configure 'xp_cmdshell', 1 ...
- youcompleteme install and configure
三四年前我配置vim插件的时候还都是手动配置,还没有听说vundle这个vim插件管理工具,现在配置vim插件的时候基本上都用vundle,这个插件也确实是方便快捷,只不过这东西时能话了就不清楚里面的 ...
- Android安卓安全审计mobiseclab
关于安卓上的app分析,有非常多的本地化软件能够胜任, 只是,今天给大家介绍一款在线的安全审计,恶意软件(android app)检測和分析工具,mobiseclab, 由于看到国内对此工具的介绍比較 ...
- javascirpt怎样模仿块级作用域(js高程笔记)
因为javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包括函数中而非语句中创建的. 如: function outputNumbers(count){ for(var i= ...
- 第4章2节《MonkeyRunner源码剖析》ADB协议及服务: ADB服务SERVICES.TXT翻译参考(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...