一、参考源文链接

1、https://www.likecs.com/show-897836.html

2、https://blog.csdn.net/weixin_43614067/article/details/115373776

二、Quartz基本使用

public class Job1 : IJob
{
public Task Execute(IJobExecutionContext context)
{
Console.WriteLine("开始定时任务1");
return Task.CompletedTask;
}
} public class Job2 : IJob
{
public Task Execute(IJobExecutionContext context)
{
Console.WriteLine("开始定时任务2");
return Task.CompletedTask;
}
}
     /// <summary>
/// 定时任务执行实例1
/// </summary>
public static void Test1()
{
var _scheduler = new StdSchedulerFactory().GetScheduler().Result;
var trigger1 = TriggerBuilder.Create()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever())//每10秒执行一次
.Build();
var trigger2 = TriggerBuilder.Create()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever())//每10秒执行一次
.Build();
var jobDetail = JobBuilder.Create<Job1>()
.WithIdentity("Myjob1", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
.Build();
var jobDetai2 = JobBuilder.Create<Job2>()
.WithIdentity("Myjob2", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
.Build();
_scheduler.ScheduleJob(jobDetail, trigger1).Wait();
_scheduler.ScheduleJob(jobDetai2, trigger2).Wait();
_scheduler.Start().Wait();
}

二、暂停和恢复某个任务

public class StartJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
for (int i = 0; i < 3; i++)
{
try
{
Thread.Sleep(1000);
}
catch (Exception e)
{
Console.WriteLine(e.StackTrace);
}
Console.WriteLine(("hello~~~~~~~~~~~~~~~~~~" + i + DateTime.Now.ToString()));
} return Task.CompletedTask;
} }
 public class PauseJob : IJob

    {
public Task Execute(IJobExecutionContext context)
{
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = null;
try
{
sched = sf.GetScheduler().Result;
Console.WriteLine("对象sf:" + sf);
Console.WriteLine("对象sched:" + sched);
}
catch (SchedulerException e)
{
Console.WriteLine(e.StackTrace);
}
CommonUtil.PauseJob(sched, "startJob", "group1"); return Task.CompletedTask;
}
}
 public class ResumeJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = null;
try
{
sched = sf.GetScheduler().Result;
Console.WriteLine("对象sf:" + sf);
Console.WriteLine("对象sched:" + sched);
}
catch (SchedulerException e)
{
Console.WriteLine(e.StackTrace);
}
CommonUtil.ResumeJob(sched, "startJob", "group1"); return Task.CompletedTask;
} }
  public class CommonUtil
{
/// <summary>
/// 暂停一个job,暂停后,任务若未执行完,会执行完毕为止。
/// </summary>
/// <param name="scheduler"></param>
/// <param name="jobName"></param>
/// <param name="jobGroupName"></param>
public static void PauseJob(IScheduler scheduler, string jobName, string jobGroupName)
{
try
{
scheduler.PauseJob(new JobKey(jobName, jobGroupName));
Console.WriteLine(string.Format("定时任务%s暂停成功!", jobName));
}
catch (SchedulerException e)
{
Console.WriteLine((string.Format("定时任务%s暂停异常!", jobName)));
}
} /// <summary>
/// 恢复一个job 恢复定时器时立刻先执行一次定时器的任务 然后再按计划执行
/// </summary>
/// <param name="scheduler"></param>
/// <param name="jobName"></param>
/// <param name="jobGroupName"></param>
public static void ResumeJob(IScheduler scheduler, String jobName, String jobGroupName)
{
try
{
scheduler.ResumeJob(new JobKey(jobName, jobGroupName));
Console.WriteLine((string.Format("定时任务%s恢复成功!", jobName)));
}
catch (SchedulerException e)
{
Console.WriteLine((string.Format("定时任务%s恢复异常!", jobName)));
}
} }
 public static void Test()
{ ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = sf.GetScheduler().Result; //创建相关的job信息
IJobDetail startJob = JobBuilder.Create<StartJob>()
.WithIdentity("startJob", "group1")
.Build(); IJobDetail pauseJob = JobBuilder.Create<PauseJob>()
.WithIdentity("pauseJob", "group2")
.Build(); IJobDetail resumeJob = JobBuilder.Create<ResumeJob>()
.WithIdentity("resumeJob", "group3")
.Build(); //创建触发器的名称
//每2s执行startJob任务
ITrigger startTrigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithSchedule(CronScheduleBuilder.CronSchedule("0/2 * * * * ?")).Build();
//每10s执行暂停任务,去暂停startJob任务
ITrigger pauseTrigger = TriggerBuilder.Create()
.WithIdentity("trigger2", "group2")
.WithSchedule(CronScheduleBuilder.CronSchedule("0/10 * * * * ?")).Build();
//每15s执行恢复任务,去恢复startJob任务
ITrigger resumeTrigger = TriggerBuilder.Create()
.WithIdentity("trigger3", "group3")
.WithSchedule(CronScheduleBuilder.CronSchedule("0/15 * * * * ?")).Build(); sched.ScheduleJob(startJob, startTrigger);
sched.ScheduleJob(pauseJob, pauseTrigger);
sched.ScheduleJob(resumeJob, resumeTrigger); sched.Start();
}

.netCore 使用 Quartz 实例的更多相关文章

  1. 初识Quartz之第一个Quartz实例

    转: 初识Quartz之第一个Quartz实例 2018年04月09日 17:07:31 carson0408 阅读数:366   版权声明:本文为博主原创文章,未经博主允许不得转载. https:/ ...

  2. 如何在spring中运行多个schedulers quartz 实例

    http://wzping.iteye.com/blog/468263 1.定义一个JOB <!-- 使用pojo来做job,指定pojo和method -->     <bean ...

  3. (转)Java任务调度框架Quartz入门教程指南(三)任务调度框架Quartz实例详解深入理解Scheduler,Job,Trigger,JobDetail

    http://blog.csdn.net/zixiao217/article/details/53053598 首先给一个简明扼要的理解: Scheduler 调度程序-任务执行计划表,只有安排进执行 ...

  4. Quartz实例:quartz定时任务代码示例

    转自:http://www.blogchong.com/post/96.html quartz定时任务调度框架,使用实例. Job类://即实际调度任务实现 . package net.csdn.ed ...

  5. quartz 实例记录

    之前介绍过了quartz的一些相关理论知识,感觉上挺简单的,实际动手操作也确实如此,去quartz的官网上把Jar包下载下来以后,会看到它的目录里有例子程序,看完第一个例子觉得还可以,但是看后面两个例 ...

  6. quartz实例以及主要事项(注解)

    实现任务类: package com.vnetoo.nec.base.quartz; import org.springframework.context.annotation.Lazy;import ...

  7. quartz 实例

    第一步:添加jar包 第二步:在spring配置文件中添加 <context:annotation-config/> 第三步:编写定时代码 我们通常做Java后台接口,是让前端访问的,让前 ...

  8. 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)

    很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...

  9. 【Quartz】将定时任务持久化到数据库

    之前的文章所做的demo是将定时任务的信息保存在内存中的,见以下配置 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore 如果,我们需要在 ...

  10. 【淘淘】Quartz之集群利弊

    一.前言: 虽然单个Quartz实例能给予我们很好的任务job调度能力,但它不能满足典型的企业需求,如可伸缩性.高可靠性满足.假如你需要故障转移的能力并能运行日益增多的 Job,Quartz集群势必成 ...

随机推荐

  1. 技术实践|数据迁移中GBK转UTF8字符集问题分析

    导语:在国产化创新的大背景下,数据库迁移项目逐渐增多,在数据库迁移过程中,源数据库和目标数据库字符集有时会不同,这时如何进行字符集转换则成为了一个重要的问题,同时在转换过程中还需要确保数据的完整性和一 ...

  2. Qt音视频开发22-音频播放QAudioOutput

    一.前言 以前一直以为只有Qt5以后才有QAudioOutput播放音频,其实从Qt4.6开始就有,在Qt6中变成了QAudioSink,功能一样.用QAudioOutput播放音频pcm数据极其方便 ...

  3. 网页端IM通信技术快速入门:短轮询、长轮询、SSE、WebSocket

    本文来自"糊糊糊糊糊了"的分享,原题<实时消息推送整理>,有优化和改动. 1.写在前面 对Web端即时通讯技术熟悉的开发者来说,我们回顾网页端IM的底层通信技术,从短轮 ...

  4. SpringBoot集成开源IM框架MobileIMSDK,实现即时通讯IM聊天功能

    一.前言 MobileIMSDK 是什么? MobileIMSDK  是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协 ...

  5. Python绘制土地利用和土地覆盖类型图详解

    土地利用和土地覆盖是环境科学和城市规划中的重要概念,它们能够帮助本文理解人与自然的关系,促进可持续发展.随着城市化进程的加快,科学地监测和管理土地资源显得尤为重要.Python作为一种强大的编程语言, ...

  6. 使用Emgu.CV开发视频播放器简述

    OpenCV是大名鼎鼎的视觉处理库,其对应的c#版本为Emgu.CV.本人采用Emgu.CV开发了一款视频播放软件,可对本地视频文件和rstp在线视频流播放,还具有对视频局部区域放大功能.虽然功能比较 ...

  7. runoob-android

    https://www.runoob.com/android/android-tutorial.html https://www.runoob.com/w3cnote/android-tutorial ...

  8. 史上最强Dubbo面试28题答案详解

    1.Dubbo是什么? Dubbo 是一个分布式.高性能.透明化的 RPC 服务框架,提供服务自动注册.自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成. RPC 指的是远程调用协议, ...

  9. biancheng-Linux教程

    目录http://c.biancheng.net/linux_tutorial/ 1Linux简介2Linux安装3Linux文件和目录管理4Linux打包(归档)和压缩5Vim文本编辑器6Linux ...

  10. MacBook配置

    如何在Mac上安装Java JDK及配置环境变量 1. 访问Java JDK 网站下载与安装(以JDK8为例) 点击下载链接:https://www.oracle.com/java/technolog ...