最近工作内容与定时任务相关,在实际使用Quartz过程中,有两个小问题较为困扰。

一。多个Trigger如何触发一个Job。

比如上下班打卡时推送消息,上班时间为9:30,打卡提醒时间为9:20较好。下班时间为18:30,提醒时间为18:40较好。此时用一个CronTrigger就解决不了。又不肯启动2个Job,和两个Trigger。看了几位大神的文章,都说一个Job可以有多个Trigger驱动,在多方搜索研究下,终于搞定了这个小问题。

方法1

            //从工厂中获取一个调度器实例化
ISchedulerFactory factory = new StdSchedulerFactory();
IScheduler scheduler = factory.GetScheduler();
IJobDetail job1 = JobBuilder.Create<SignJob>() //创建一个即时消息作业
.WithIdentity("打卡任务", "打卡组")
.Build(); ITrigger trigger1 = TriggerBuilder.Create()
.WithCronSchedule("0 20 9 * * ?")
.ForJob(job1)//重要
.Build();
scheduler.ScheduleJob(job1, trigger1); //把作业,触发器加入调度器。 ITrigger trigger2 = TriggerBuilder.Create()
.WithCronSchedule("0 40 18 * * ?")
.ForJob(job1)//重要
.Build();
       
scheduler.ScheduleJob(trigger2);
scheduler.Start();

如此,一个Job可以有多少个Trigger了。

方法2

        /// <summary>
/// 负责创建按时间点执行一次的任务。
/// </summary>
/// <typeparam name="S"></typeparam>
/// <param name="cycleObj"></param>
/// <param name="t"></param>
public static void CreateJobWithTimePoints<S>(S cycleObj, Type t) where S : BaseCycle
{
IScheduler scheduler = new Common.QuartzHelper().scheduler;
IJobDetail job2 = scheduler.GetJobDetail(new JobKey(cycleObj.JobName, cycleObj.GroupName));
if (job2 == null)
job2 = JobBuilder.Create(t)
.WithIdentity(cycleObj.JobName, cycleObj.GroupName)
.Build();
scheduler.AddJob(job2, true, true);//重要
foreach (DateTime dt in cycleObj.TimePoints)
{
ITrigger ti = TriggerBuilder.Create()
.WithIdentity("TimePoints" + dt.ToString("yy-MM-dd_HH:mm:ss"), "TimePoints")
.StartAt(dt) //现在开始
.ForJob(job2)
.Build();
scheduler.ScheduleJob(ti);
}
}

Quartz.Net 使用心得(一)的更多相关文章

  1. Quartz.Net 使用心得(二)

    工作中需要做一个简易的Cron字符串生成器,并且要获取生成的Cron后面10次的触发时间来验证. 此问题困扰了我很久时间,CSDN上有一个Java版本的,本人菜鸟,想移植到C#中,语法上怎么也不通过. ...

  2. 学习了quartz.net2.0的心得

    由于项目中要运用到此调度方法,所以抽空学习了下,简单的用法可以掌握了 首先作为没有用过的人来说,怎么用呢? 于是百度了下原来先要下载 quartz.net2.0, 然后我就去下了个quartz.net ...

  3. 【59】Quartz+Spring框架详解

    什么是Quartz Quartz是一个作业调度系统(a job scheduling system),Quartz不但可以集成到其他的软件系统中,而且也可以独立运行的:在本文中"job sc ...

  4. QUARTZ系列之零:概述

    前言: 很早就会使用quartz进行任务调度了,然一直只是会用,甚至只是会用如下的套路: { 1.获取个schedule 2.实例一个job 3.实例一个trigger 4. schedule.sch ...

  5. Quartz.Net进阶之七:QuartzNet其他的功能简述

    一.介绍 今天是这个系列的最后一篇文章了,主要功能说的差不多了,我们来看看其他相关的内容.话说回来,虽然是这个系列的最后一篇文章,并不代表Quartz的东西就这么点,学习阶段,就这些了,如果以后有了使 ...

  6. 朱晔的互联网架构实践心得S2E1:业务代码究竟难不难写?

    注意,这是我的架构实践心得的第二季的系列文章,第一季有10篇你也可以回顾. 见https://www.cnblogs.com/lovecindywang/category/1296779.html 最 ...

  7. 朱晔的互联网架构实践心得S1E2:屡试不爽的架构三马车

    朱晔的互联网架构实践心得S1E2:屡试不爽的架构三马车 [下载本文PDF进行阅读] 这里所说的三架马车是指微服务.消息队列和定时任务.如下图所示,这里是一个三驾马车共同驱动的一个立体的互联网项目的架构 ...

  8. jeecg使用心得

    接触到jeecg框架是在去年,接触到了jeecg开源框架,此框架为企业级急速开发框架,不了解的可以百度下这类框架的,对于目前状态来说,此框架确实也满足了所需,此刻就开始接触jeecg框架,去年六七月份 ...

  9. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

随机推荐

  1. matlab实现基于DFS的Ford_Fulkerson最大流最小割算法

    function [F, maxf, V, S] = Ford_Fulkerson(C, src, sink) n = size(C, 1); F = zeros(n); maxf = 0; V = ...

  2. 国产芯片任重道远 国科微SSD主控芯片的“追赶之路”(不能只提供一颗芯片,而是要将芯片、国密算法、固件Firmware、BIOS和操作系统紧密联系在一起,变成完整解决方案交给行业用户,才能真正体现自身的价值)

    集微网消息,“中国芯”战略之路道阻且长,踏入这个赛道的攻坚者们需要十年如一日的技术突破,需要集合产业势能,共同协作,方能建立中国核心技术真正的竞争力. 国产化之路任重道远,SSD芯片初见成效 信息时代 ...

  3. luogu1775 古代人的难题 打表找规律

    题目大意:给出一正整数k,求满足(x^2-x*y-y^2)^2=1且x,y∈[1,k]且x^2+y^2最大的正整数x,y. 既然x,y的范围给出来了,我们便有了暴力解法.因此,本题最适合打表找规律了! ...

  4. luogu1313 计算系数

    题目大意:给定一个多项式(ax+by)^k,请求出多项式展开后x^n*y^m 项的系数. 将原式化为(ax+by)*(ax+by)*...①,然后将其拆解,拆解时x乘了多少次,a就乘了多少次,y,b同 ...

  5. POJ3414 Pots

    题目: 给你两个容器,分别能装下A升水和B升水,并且可以进行以下操作 FILL(i)        将第i个容器从水龙头里装满(1 ≤ i ≤ 2); DROP(i)        将第i个容器抽干 ...

  6. LeetCode Weekly Contest 27

    1. 557. Reverse Words in a String III 分割字符串,翻转. class Solution { public: string reverseWords(string ...

  7. LeetCode Weekly Contest 25

    1. 507. Perfect Number 显然小于2的都不满足(尤其是负数的情况),进一步,显然质数都不满足,所以小于4的数,直接return false. 然后依次暴力枚举判断到sqrt(n), ...

  8. T对象序列化后T对象中属性字段不见了?

    序列化:JsonConvert.SerializeObject(T) 直接在类的上面添加[Table("表名")] 在类上添加属性[DataContract] 在属性上添加属性[D ...

  9. BZOJ1222: [HNOI2001]产品加工(诡异背包dp)

    Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 907  Solved: 587[Submit][Status][Discuss] Descriptio ...

  10. flex知识点精炼

    原址:http://www.runoob.com/w3cnote/flex-grammar.html 容器的属性 设置Flex布局之后,子元素的float.clear.vertical align将失 ...