小记一下通过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 进行定时任务的更多相关文章

  1. 使用Quartz创建定时任务

    项目开发中经常需要定时循环执行某些任务 比如定时发送报表,定时发送邮件,亦或者定时清理缓存,定时更新数据等等 有些时候可以简单地利用Windows Server的计划任务执行程序 Linux也有相应的 ...

  2. Quartz.net 定时任务之Cron表达式

    一.cron表达式简单介绍和下载 1.在上一篇博客"Quartz.net 定时任务之简单任务"中,我简单介绍了quartz的使用,而这篇博客我将介绍cron的具体使用(不足之处望大 ...

  3. springboot整合Quartz实现定时任务

    1.maven依赖: <!--quartz--> <dependency> <groupId>org.quartz-scheduler</groupId> ...

  4. Spring+Quartz 实现定时任务的配置方法

    Spring+Quartz 实现定时任务的配置方法 整体介绍 一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是 ...

  5. Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置

    Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置 >>>>>>>>>>>>&g ...

  6. 【spring-boot】 springboot整合quartz实现定时任务

    在做项目时有时候会有定时器任务的功能,比如某某时间应该做什么,多少秒应该怎么样之类的. spring支持多种定时任务的实现.我们来介绍下使用spring的定时器和使用quartz定时器 1.我们使用s ...

  7. Spring Boot集成quartz实现定时任务并支持切换任务数据源

    org.quartz实现定时任务并自定义切换任务数据源 在工作中经常会需要使用到定时任务处理各种周期性的任务,org.quartz是处理此类定时任务的一个优秀框架.随着项目一点点推进,此时我们并不满足 ...

  8. SpringBoot集成Quartz实现定时任务

    1 需求 在我的前后端分离的实验室管理项目中,有一个功能是学生状态统计.我的设计是按天统计每种状态的比例.为了便于计算,在每天0点,系统需要将学生的状态重置,并插入一条数据作为一天的开始状态.另外,考 ...

  9. Quartz:定时任务工具类

    Quartz:定时任务工具类 Quartz工具类 Quartz工具类 import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; ...

  10. Spring+quartz 实现定时任务job集群配置

    为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真 ...

随机推荐

  1. 运行时应用自我保护(RASP):应用安全的自我修养

    应用程序已经成为网络黑客想要渗透到企业内部的绝佳目标. 因为他们知道如果能发现并利用应用程序的漏洞,他们就有超过三分之一的机会成功入侵. 更重要的是,发现应用程序漏洞的可能性也很大. Contrast ...

  2. ABAP CDS-基础语法规则

    The general syntax rules for the DDL and the DCL in ABAP CDS are: Keywords Keywords must be all uppe ...

  3. 【python基础】第05回 数据类型,交互,格式化输出,运算符

    上节内容回顾 1.python的注释 # 单行注释 pycharm快捷键:ctrl+? '''多行注释''' """多行注释""" 2.py ...

  4. NC16618 [NOIP2008]排座椅

    NC16618 [NOIP2008]排座椅 题目 题目描述 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下 ...

  5. 树莓派实战:微信机器人(itchat实现)

    背景 楼主有一台树莓派4B开发板(8G内存版),是目前的顶配机型.这一年来的业余时间,除了写Java.架构方面的文章,也陆续折腾了不少树莓派上的好玩小项目,在此新开一个树莓派实战的文章系列,分享给粉丝 ...

  6. Python List 中的append 和 extend 的区别

    方法的参数不同 append 方法是向原list的末尾添加一个对象(任意对象:如元组,字典,列表等),且只占据一个原list的索引位,添加后无返回值,直接在原列表中添加. list.append(ob ...

  7. day10 Map_查找与遍历

    Map 查找表 Map体现的结构是一个多行两列的表格,其中左列称为key,右列称为value. Map总是成对保存数据,并且总是根据key获取对应的value.因此我们可以将查询的条件作为key查询对 ...

  8. ML.NET相关资源整理

      在人工智能领域,无论是机器学习,还是深度学习等,Python编程语言都是绝对的主流,尽管底层都是C++实现的,似乎人工智能和C#/F#编程语言没什么关系.在人工智能的工程实现,通常都是将Pytho ...

  9. 为美多商城(Django2.0.4)添加基于websocket的实时通信,主动推送,聊天室及客服系统

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_67 websocket是个啥? webSocket是一种在单个TCP连接上进行全双工通信的协议 webSocket使得客户端和服务 ...

  10. 彻底弄清楚session,cookie,sessionStorage,localStorage的区别及应用场景(面试向)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_94 客户端状态保持是一个老生常谈的问题了,归根结底追踪浏览器的用户身份及其相关数据无非就是以下四种方式:session,cooki ...