通过Quartz 进行定时任务
小记一下通过Quartz 进行轮询数据库从而进行自动打印的需求。
一:首先通过NuGet引用Quartz,Quartz依赖Common.Logging和Common.Logging.Log4Net1211,所以同时需要引用这两个DLL,Common.Logging.Log4Net1211最新版本名称是Common.Logging.Log4Net1213,引用即可。
二:创建Job,基础代码如下

1 /// <summary>
2 /// 自动打印job
3 /// </summary>
4 [DisallowConcurrentExecution]
5 public class AutoPrintJob : IJob
6 {
7 public async Task Execute(IJobExecutionContext context)
8 {
9 await Task.Run(() =>
10 {
11 //具体处理逻辑
12 });
13 }
14 }
三:创建Scheduler,基础代码如下

1 public class PrintJobScheduler
2 {
3 public static IScheduler scheduler;
4 public static void Start()
5 {
6 try
7 {
8 Logger.Log($"开始创建自动打印任务", Logger.Category.General, Logger.Severity.Information);
9 //创建调度单元
10 Task<IScheduler> tsk = StdSchedulerFactory.GetDefaultScheduler();
11 //不能注释,注释掉添加调度池的时候会报错
12 scheduler = tsk.Result;
13 //2.创建一个具体的作业即job (具体的job需要单独在一个文件中执行)
14 IJobDetail job = JobBuilder.Create<AutoPrintJob>().WithIdentity("AutoPrintIdentity").Build();
15 string isDebug = ConfigurationManager.AppSettings["IsDebug"].ToString();
16 string cronExpression = GetLoopInterval();
17 //3.创建并配置一个触发器即trigger
18 ITrigger _CronTrigger = TriggerBuilder.Create()
19 .WithIdentity("TriggerAutoPrint")
20 .WithCronSchedule(cronExpression) //秒 分 时 某一天 月 周 年(可选参数)
21 .Build()
22 as ITrigger;
23 //4.将job和trigger加入到作业调度池中
24 scheduler.ScheduleJob(job, _CronTrigger);
25 //5.开启调度
26 scheduler.Start();
27 Logger.Log($"创建自动打印任务成功", Logger.Category.General, Logger.Severity.Information);
28 }
29 catch (Exception ex)
30 {
31 Logger.Log($"创建自动打印任务失败,错误信息:"+ex, Logger.Category.ErrorLog, Logger.Severity.Error);
32 }
33 }
34 public static string GetLoopInterval()
35 {
36 //获取配置文件任务循环间隔
37 int intervalConfig = 1;
38 if (ConfigurationManager.AppSettings["AutoPrintIntervalTime"]!=null)
39 {
40 intervalConfig = Convert.ToInt32(ConfigurationManager.AppSettings["AutoPrintIntervalTime"]);
41 }
42 return intervalConfig.ToString();
43 }
44 }
四:在Global.axax调用Scheduler:

通过Quartz 进行定时任务的更多相关文章
- 使用Quartz创建定时任务
项目开发中经常需要定时循环执行某些任务 比如定时发送报表,定时发送邮件,亦或者定时清理缓存,定时更新数据等等 有些时候可以简单地利用Windows Server的计划任务执行程序 Linux也有相应的 ...
- Quartz.net 定时任务之Cron表达式
一.cron表达式简单介绍和下载 1.在上一篇博客"Quartz.net 定时任务之简单任务"中,我简单介绍了quartz的使用,而这篇博客我将介绍cron的具体使用(不足之处望大 ...
- springboot整合Quartz实现定时任务
1.maven依赖: <!--quartz--> <dependency> <groupId>org.quartz-scheduler</groupId> ...
- Spring+Quartz 实现定时任务的配置方法
Spring+Quartz 实现定时任务的配置方法 整体介绍 一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是 ...
- Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置
Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置 >>>>>>>>>>>>&g ...
- 【spring-boot】 springboot整合quartz实现定时任务
在做项目时有时候会有定时器任务的功能,比如某某时间应该做什么,多少秒应该怎么样之类的. spring支持多种定时任务的实现.我们来介绍下使用spring的定时器和使用quartz定时器 1.我们使用s ...
- Spring Boot集成quartz实现定时任务并支持切换任务数据源
org.quartz实现定时任务并自定义切换任务数据源 在工作中经常会需要使用到定时任务处理各种周期性的任务,org.quartz是处理此类定时任务的一个优秀框架.随着项目一点点推进,此时我们并不满足 ...
- SpringBoot集成Quartz实现定时任务
1 需求 在我的前后端分离的实验室管理项目中,有一个功能是学生状态统计.我的设计是按天统计每种状态的比例.为了便于计算,在每天0点,系统需要将学生的状态重置,并插入一条数据作为一天的开始状态.另外,考 ...
- Quartz:定时任务工具类
Quartz:定时任务工具类 Quartz工具类 Quartz工具类 import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; ...
- Spring+quartz 实现定时任务job集群配置
为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真 ...
随机推荐
- go Cobra命令行工具入门
简介 Github:https://github.com/spf13/cobra Star:26.5K Cobra是一个用Go语言实现的命令行工具.并且现在正在被很多项目使用,例如:Kuberne ...
- QT与DoNet中单例模式的简单实现
由于使用场景的不同,单例模式的写法也有所区别. 目前接触到的,大多数都是多线程,大量数据处理,还要考虑灵活性,对原有类结构改动最小等因素,所以写法更是多种多样. QT个人较常用的一种写法:(两个文件: ...
- SVN+Maven+Tomcat+Jenkins持续构建
一.准备工作 1.1安装软件 安装JDK.SVN.Maven.Tomcat.Jenkins及必要插件. 1.2安装jenkins所需插件 最开始安装jenkins时选择安装默认的插件. 其他插件: M ...
- React技巧之处理tab页关闭事件
原文链接:https://bobbyhadz.com/blog/react-handle-tab-close-event 作者:Borislav Hadzhiev 正文从这开始~ 总览 在React中 ...
- 对象映射 - Mapping.Mapster
前言 在项目中我们会经常遇到对象的映射,比如像Model和Dto之间的映射,或者是对象的深拷贝,这些都是需要我们自己实现的.此时,项目中会出现很多初始化对象的代码,这些代码写起来相当的枯燥乏味,那么有 ...
- Mysql数据库的默认引擎
InnoDB的优势在于提供了良好的事务处理.崩溃修复能力和并发控制.缺点是读写效率较差,占用的数据空间相对较大. ①InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制.如果需要对事务的完 ...
- 扩展-PageHelper分页插件
1.PageHelper 分页插件简介 1) PageHelper是MyBatis中非常方便的第三方分页插件 2) 官方文档: https://github.com/pagehelper/Mybati ...
- docker安装confluence
目录 一.docker安装 二.破解 三.配置mysql数据库 四.域名配置 五.参考 一.docker安装 1.安装镜像 docker pull atlassian/confluence-serve ...
- Solution -「CF520E」Pluses everywhere
Step 1. 转化一步题目:考虑有 \(n\) 个小球,每个小球有 \(a_i\) 的价值,\(m\) 个板子,把板子插进小球间的空隙,且不能插在第 \(1\) 个球之前与第 \(n\) 个球之后. ...
- python中的标识符和保留字
保留字,有一些单词被赋予了特定的意义,这些单词不能作为对象的名字 想要快速获取python中的关键字可以通过以下的程 序来快速实现 import keyword print(keyword.kwlis ...