一、参考源文链接

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. XLST 的坑

    微软真的挖了很多坑,可能就像任正非说的,在90年代进入了无人区,差不多十年多时间有精力没有地方撒,无法判断前进方向,推出了很多错误的路线.现在遇到的 XLST 就是一个大坑. XLM 在 00 年后开 ...

  2. 【JavaWeb】前后端分离SpringBoot项目快速排错指南

    1 发起业务请求 打开浏览器开发者工具,同时显示网络(Internet)和控制台(console) 接着,清空控制台和网络的内容,如下图 然后,点击你的业务按钮,发起请求. 首先看控制台有没有报错信息 ...

  3. Qt/C++音视频开发62-电子放大/按下选择区域放大显示/任意选取区域放大

    一.前言 电子放大这个功能思考了很久,也是一直拖到近期才静下心来完整这个小功能,这个功能的前提,主要得益于之前把滤镜打通了,玩出花样来了,只要传入对应的滤镜字符串,就可以实现各种各样的效果,然后查阅滤 ...

  4. Qt编写的项目作品13-机房安全作业预警系统

    一.功能特点 显示维修间所有图像: 门外1号红外,门内2号红外: 1号先报警,紧接2号报警,人员进入计时: 图标显示:人员图标和报警等级图标,人员进入了,人员图标闪烁,等级图标对应不同时间: 功能要求 ...

  5. 不为人知的网络编程(十六):深入分析与解决TCP的RST经典异常问题

    本文由腾讯技术kernel分享,原题"TCP经典异常问题探讨与解决",下文进行了排版和内容优化等. 1.引言 TCP的经典异常问题无非就是丢包和连接中断,在这里我打算与各位聊一聊T ...

  6. manim边做边学--动画联动

    今天介绍Manim中的动画联动的技巧,在数学动画中,动画联动是常用的功能, 比如讲解平面几何中三角形与圆的位置关系变化,通过动画联动可以让圆沿着三角形的边滚动,或者让三角形的顶点在圆上移动,从而直观地 ...

  7. Springboot 整合 xxl-job

    前言 很久很久以前写过好几篇关于定时任务的使用系列的文章: 这一篇是最简单的,就是单纯跑跑定时任务,那你看这篇就行,没必要用xxljob(因为xxljob要跑服务端,然后自己服务作为客户端接入): 文 ...

  8. Java中的值类型

    在打算了解Java的时候,根据C#的经验,了解一下Java中有哪一些值类型,如何判断某个类型为值类型还是引用类型是一件值得做的事情. 在C#中,值类型存放在栈中,不需要垃圾回收,引用类型存放在堆中,需 ...

  9. unified-message(统一消息平台)开源项目介绍

    unified-message(统一消息平台),为业务系统提供了标准的消息发送功能 支持发送短信.邮件.企业微信等消息,可以扩展支持其它的消息类型 可以通过手机号.邮件.企业微信用户名直接发送, 可以 ...

  10. kNN(K- Nearest Neighbor)基本原理