定时器--Quartz.Net
这次由于项目的需求:什么定时发送邮件通知,定时筛选取消客户下单未支付的订单
重新捡起定时器,在网上翻来找去找到----Quartz.Net老字号了并不表示它就真的老了哦
github:https://github.com/quartznet/quartznet
当然介绍的园子里文章很多跟官方文档https://www.quartz-scheduler.net介绍的都挺清楚的!用起来很简便!
so!接下来我简单介绍一下Quartz.Net框架设计 下图借用园友的应该不会介意

园子中搜索发现已经有同学去实践了,这里引用一下各位大大的博文地址(应该不会介意,嘻嘻),大家也可以参考学习:
http://www.cnblogs.com/knowledgesea/p/5145239.html Quartz.net持久化与集群部署开发详解
http://www.cnblogs.com/mushroom/p/4231642.html#3760225 Net作业调度(四)—quartz.net持久化和集群
http://www.cnblogs.com/lanxiaoke/p/6629481.html 任务调度之持久化(基于Quartz.net)
http://www.cnblogs.com/lanxiaoke/p/6637714.html 任务调度之集群(基于Quartz.net)
http://www.cnblogs.com/huangxincheng/p/6916246.html 使用sqlserver搭建高可用双机热备的Quartz集群部署【附源码】
在此博主自己将Quartz.net的所需类目做了一次整合,大伙可以瞅瞅
using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Wshelper.Caching;
using Wshelper.Logging; namespace Commons.Helpers
{
public class QuartzHelper
{
/// <summary>
/// 时间间隔执行任务
/// </summary>
/// <typeparam name="T">任务类,必须实现IJob接口</typeparam>
/// <param name="seconds">时间间隔(单位:毫秒)</param>
public static void ExecuteInterval<T>(int seconds) where T : IJob
{
ISchedulerFactory factory = new StdSchedulerFactory();
IScheduler scheduler = factory.GetScheduler(); //IJobDetail job = JobBuilder.Create<T>().WithIdentity("job1", "group1").Build();
IJobDetail job = JobBuilder.Create<T>().Build(); ITrigger trigger = TriggerBuilder.Create()
.StartNow()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(seconds).RepeatForever())
.Build(); scheduler.ScheduleJob(job, trigger); scheduler.Start();
}
/// <summary>
/// 指定时间执行任务
/// </summary>
/// <typeparam name="T">任务类,必须实现IJob接口</typeparam>
/// <param name="cronExpression">cron表达式,即指定时间点的表达式</param>
public static void ExecuteByCron<T>(string cronExpression) where T : IJob
{
ISchedulerFactory factory = new StdSchedulerFactory();
IScheduler scheduler = factory.GetScheduler(); IJobDetail job = JobBuilder.Create<T>().Build(); //DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddSeconds(1), 2);
//DateTimeOffset endTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddYears(2), 3); ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
//.StartAt(startTime).EndAt(endTime)
.WithCronSchedule(cronExpression)
.Build(); scheduler.ScheduleJob(job, trigger); scheduler.Start(); //Thread.Sleep(TimeSpan.FromDays(2));
//scheduler.Shutdown();
}
} #region 任务执行例
public class MyJob : IJob
{
ILogger logger = LoggerFactory.CreateLog();
public void Execute(IJobExecutionContext context)
{
//向c:\Quartz.txt写入当前时间并换行
//System.IO.File.AppendAllText(@"c:\Quartz.txt", DateTime.Now + Environment.NewLine);
ICache cache = new MemoryCacheFactory().Create();
cache.Clear();
logger.Info("时间:" + DateTime.Now.ToString() + "---------系统自动更新缓存!");
}
}
#endregion
}
启动:
public static void QuartzHelp()
{
//#region Quartz调度任务
string cronExpression = "1 0 0 * * ? "; //这是指每天的0点执行任务
QuartzHelper.ExecuteByCron<MyJob>(cronExpression); //这是调用Cron计划方法
//#endregion
}
Quartz.Net 作者已经更新了支持.net standrad2.0了,就意味着可以在.net core平台使用了,下载地址:https://www.nuget.org/packages/Quartz/3.0.0-beta1,更新说明地址:https://www.quartz-scheduler.net/2017/10/08/quartznet-3.0-beta1-released.html,相信不久之后就会发布release版本,届时.net core框架开发就不怕没有定时器的支持了,~( ̄▽ ̄~)(~ ̄▽ ̄)~
定时器--Quartz.Net的更多相关文章
- Spring 定时器Quartz的用法
Spring定时器Quartz的用法也很简单,需要引入quartz-all-1.5.2.jar java代码如下: package com.coalmine.desktop; import java. ...
- SSH框架中 Spring设置定时器 Quartz
一,首先下载quartz-1.6.0.jar架包,到lib目录下 二,写你自己定时器业务方法 package com.lbnet.lzx.timing; import org.quartz.JobEx ...
- spring 定时器----quartz启动问题
今天,突然要用到定时器,在网上查了下资料,保存下以方便后面查找: 什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定). 这样总不能修改配置文件 ...
- 【框架学习与探究之定时器--Quartz.Net 】
声明 本文欢迎转载,原文地址:http://www.cnblogs.com/DjlNet/p/7572174.html 前言 这里相信大部分玩家之前现在都应该有过使用定时器的时候或者需求,例如什么定时 ...
- Spring定时器Quartz的使用
在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等,定时更新某某操作……. 我们可以使用java.util.Timer结合java.util.TimerT ...
- .Net Core 定时器Quartz
最近因为项目需要用到了Quartz,下面简单记录一下. 一.首先需要安装Quartz. 二.定义一个执行的Job类,实现IJob接口,接口有一个方法Execute,用来执行定时任务的实现内容. pub ...
- spring 定时器Quartz
一.Quartz是什么 二. 核心接口 scheduler --- 核心调度器 Job --- 任务 JobDetail --- 任务描述 Tigger --- 触发器 三 . 核心接口之间 ...
- Jobs定时器 - Quartz
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...
- 定时器quartz工具类
一.gradle配置 // https://mvnrepository.com/artifact/org.quartz-scheduler/quartz compile group: 'org.qua ...
随机推荐
- WPF如何设置Image.Source为资源图片
img.Source = new BitmapImage(new Uri(path,UriKind.RelativeOrAbsolute));
- linux下java版本管理工具jenv使用介绍
不同的项目使用的java版本不同,每次切换时都需要手动去修改java的环境变量,麻烦至极. jenv可以管理java版本,轻松实现管理多个java的问题. 一.下载jenv $ git clone h ...
- 免 Google Play 的安卓应用下载平台
本文已过时,以后会在我的新博客内更新 https://blog.clso.fun/posts/2019-03-22/non-google-play-apk-download.html 鉴于那啥你懂的原 ...
- Asp.Net MVC EF之二:原生EF插入,更新数据的正确方法
引言 EF是相对与Dapper.NHibernate官方首推的ORM框架,其在开发过程中的方便,快捷毋庸置疑的,但由于EF本身的一些缓存机制.跟踪机制,所以在使用时有些地方需要特别注意. 下面我将自己 ...
- 05_python_字典
一.字典定义 字典是python中唯一的映射类型,以{ }括起来的键值对组成,在dict中key是唯一的.在保存时,根据key来计算一个内存地址,然后把key-value保存至地址中.这种算法是has ...
- MySQL赋权
MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利.grant select ...
- [JavaScript] 的异步编程之手写一个Gernerator的例子
<html> <head> <meta charset="UTF-8"> <title>Generator Demo</tit ...
- axios请求拦截及请求超时重新请求设置
自从使用Vue2之后,就使用官方推荐的axios的插件来调用API,在使用过程中,需要解决问题: 1. 请求带token校验 2. post请求请求体处理 3. 响应未登录跳转登录页处理 4. 响应错 ...
- D3.js的基础部分之选择集的处理 过滤器、选择集的顺序、each()和call()的应用(v3版本)
选择集的处理 : 过滤器 有时候需要根据绑定数据对某选择集的元素进行过滤,例如某公司,只对id大于100的员工进行奖励.某学校只选拔身高超过170cm的学生等.类似这样的问题,需要根据条件获取选择集的 ...
- nc命令简介
nc介绍 ncat/nc 既是一个端口扫描工具,也是一款安全工具,还能是一款监测工具,甚至可以做为一个简单的 TCP 代理. 在大多数 Debian 发行版中,nc 是默认可用的,它会在安装系统的过程 ...