通过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同时进行汇总,最终计算结果可能是真 ...
随机推荐
- 关于使用koa 跨域问题你可能会遇到
var cors = require('koa2-cors');// 跨域const allowOrigins = ["http://localhost:8080" // 需要跨域 ...
- 有关于weiphp2.00611上传sae的一些注意(图片上传解决方案)
一.安装中注意的事项 安装时使用的系统为weiphp2.0611 版本 1.将所有文件上传到代码库中 2.按照步骤进行安装weiphp,注意在数据库导入的时候需要手动导入. ...
- 攻防世界pwn题:Recho
0x00:查看文件信息 一个64位二进制文件,canary和PIE保护机制没开. 0x01:用IDA进行静态分析 分析:主程序部分是一个while循环,判断条件是read返回值大于0则循环.函数ato ...
- Codeforces Round #779 (Div. 2)
A 题目连接 题目大意 给一个01串,其中每一个长度大于等于2的子区间中0的数量不大于1的数量,最少插入多少1 思路 寻找 00 和 010 00 -->0110 加2 010 --&g ...
- 攻防世界MISC进阶区--39、40、47
39.MISCall 得到无类型文件,010 Editor打开,文件头是BZH,该后缀为zip,打开,得到无类型文件,再改后缀为zip,得到一个git一个flag.txt 将git拖入kali中,在g ...
- OneOS家族,LITE版小兄弟诞生了!
号外,号外!OneOS-Lite诞生啦!前有大哥OneOS,以及一众优秀的RTOS,正所谓珠玉在前,我很难啊.但我可不能怂,大哥叫小O,我就叫小L,站在大哥的肩上,小小L也有发光发热的机会. 小L代码 ...
- LDAP+Gitea统一认证Git服务器账户管理openLdap和微软的ad
很多时候我们需要管理多个内容管理系统,比如Jira.Jenkins.GitEA/Gitlab等等各种管理系统,我们需要每一套管理系统每个人都管理一套密码,每套系统每套密码简直是一种灾难,于是LDAP可 ...
- super详解(继承)
//在Java中,所有的类,都默认直接或者间接继承objec类// Person 人 :父类public class Person /*extends object*/ { public Person ...
- [SWPU2019]Web1-1|SQL注入
1.打开之后界面如下: 2.查看源代码.登录注入等未发现有用信息,结果如下: 3.进行注册试试,注册时发现admin账户已被注册,随便注册一个账户并登录,结果如下: 申请发布广告页面如下: 4.发布广 ...
- redis学习之数据类型
<?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); echo "Co ...