Quartz.Net的基础使用方法,多任务执行
接着上面单任务执行的代码做一下简单的扩展
主要看下面这段代码,这是Quartz多任务调度的方法,主要就是围绕这个方法去扩展:
//
// 摘要:
// Schedule all of the given jobs with the related set of triggers.
//
// 言论:
// If any of the given jobs or triggers already exist (or more specifically, if
// the keys are not unique) and the replace parameter is not set to true then an
// exception will be thrown.
Task ScheduleJobs(IReadOnlyDictionary<IJobDetail, IReadOnlyCollection<ITrigger>> triggersAndJobs, bool replace, CancellationToken cancellationToken = default);
1、首先我们建两个任务类:
using System;
using System.Threading.Tasks;
using Quartz; namespace HHF.Quartz
{
public class Task_1 : IJob
{
public Task Execute(IJobExecutionContext context)
{
return Console.Out.WriteLineAsync($"这是任务一,执行时间:{DateTime.Now}");
}
}
}
2、改造一下之前的QuartzScheduler类,添加一个GetJobs方法,生成任务集合
/// <summary>
/// 很Low的一段代码
/// </summary>
/// <returns></returns>
public List<IJobDetail> GetJobs()
{
IJobDetail job1 = JobBuilder.Create<Task_1>()
.WithIdentity("job1")
.Build();
IJobDetail job2 = JobBuilder.Create<Task_2>()
.WithIdentity("job3")
.Build();
return new List<IJobDetail>() { job1, job2 };
}
3、改造一下Run方法
/// <summary>
/// 任务调度的使用过程
/// </summary>
/// <returns></returns>
public async static Task Run()
{
// 创建scheduler的引用
ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler sched = await schedFact.GetScheduler(); // 获取job集合
var jobs = GetJobs();
// 申明一个任务与触发器映射的字典集合
var jobAndTriggerMapping = new Dictionary<IJobDetail, IReadOnlyCollection<ITrigger>>();
// 遍历任务列表
for (int i = ; i < jobs.Count; i++)
{
var job = jobs[i];
// 只读的触发器集合
var triggers = new ReadOnlyCollection<ITrigger>(
new List<ITrigger>()
{
TriggerBuilder.Create()
.WithIdentity("trigger_"+i)
.WithSimpleSchedule(x => x.WithIntervalInSeconds(i+).RepeatForever())
.Build()
});
// 建立映射关系
jobAndTriggerMapping[job] = triggers;
}
// 将映射关系包装成制度字典集合
var readOnlyjobAndTriggerMapping = new ReadOnlyDictionary<IJobDetail, IReadOnlyCollection<ITrigger>>(jobAndTriggerMapping); /*
* 使用trigger规划执行任务job
*第二个参数replace:如果为true,则指定的触发器或者任务名称已经存在将会替换,否则将抛出异常
*/
await sched.ScheduleJobs(readOnlyjobAndTriggerMapping, true); // 启动 scheduler
await sched.Start();
}
4、查看执行结果,我们可以看到,任务一的执行间隔时间为5秒,任务二的执行间隔时间为6秒,可以正常执行。

Quartz.Net的基础使用方法,多任务执行的更多相关文章
- Quartz.Net的基础使用方法,多任务执行继续扩展
前一篇随笔讲了Quartz多任务的简单实现 Quartz.Net的基础使用方法,多任务执行 这一篇,来简单对前一篇进行一下简单的扩展 看了前一篇的代码会发现,每次新增一个任务还要去GetJobs方法里 ...
- 2019-1-29-Moq基础-判断方法被执行
title author date CreateTime categories Moq基础 判断方法被执行 lindexi 2019-01-29 16:29:57 +0800 2019-01-17 1 ...
- Quartz.Net的基础使用方法,单任务执行
1.先创建一个控制台应用程序 2.应用Quartz的NuGet包 3.编写执行任务代码 using System; using System.Threading.Tasks; using Quar ...
- Moq基础 判断方法被执行
如果想知道注入的类的某个方法被使用了几次,就可以通过 mock 提供的方法进行判断方法有没被执行或被使用多少次 本文是一个系列,具体请看 Moq基础(一) 为什么需要单元测试框架 Moq基础(二) 快 ...
- Spring+Quartz 实现定时任务的配置方法
Spring+Quartz 实现定时任务的配置方法 整体介绍 一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是 ...
- 逆向与BOF基础——注入shellcode并执行&Return-to-libc
逆向与BOF基础--注入shellcode并执行 准备阶段 下载安装execstack. 本次实验实验的shellcode是心远的文章中生成的代码,即\x31\xc0\x50\x68\x2f\x2f\ ...
- Java 进阶7 并行优化 JDK多任务执行框架技术
Java 进阶7 并行优化 JDK多任务执行框架技术 20131114 Java 语言本身就是支持多线程机制的,他提供了 Thread 类 Runnable 接口等简单的多线程支持工 ...
- 千锋教育Vue组件--vue基础的方法
课程地址: https://ke.qq.com/course/251029#term_id=100295989 <!DOCTYPE html> <html> <head& ...
- SaltStack介绍——SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流
SaltStack介绍和架构解析 简介 SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位.SaltSta ...
随机推荐
- T4 分配时间 题解
问题描述 小王参加的考试是几门科目的试卷放在一起考,一共给 t 分钟来做.他现在已经知道每 门科目花的时间和得到的分数的关系,还有写名字要的时间(他写自己的名字很慢)请帮他 算一下他最高能得几分.总分 ...
- 五大高效的PDF文件搜索引擎
当你花了半个多小时在线搜索PDF文档,却发现您找到的文档都不是您需要的PDF格式.如前说述,您可以先打开PDF文档查看是不是PDF格式的,然后再到web浏览器中下载该文档.那么,为了确保您获得的文档是 ...
- map数据按照list排序
简介 (Introduction): 背景 需要对字段进行排序,但是,一个字段的结果存在一个map中,一个存在list中,需要让map的数组,按照list的顺序进行排序 结构图 list顺序 [ { ...
- css初始化表(normalize.css)
为什么要初始化CSS? 建站老手都知道,这是为了考虑到浏览器的兼容问题,其实不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面差异.当然,初始化样式会对SEO有一定的 ...
- 题解 洛谷 P3710 【方方方的数据结构】
因为有撤销操作,所以修改操作可能会只会存在一段时间,因此把时间看作一维,被修改的序列看作一维. 可以把操作都离线下来,对于每个修改操作,就是在二维平面上对一个矩形进行修改,询问操作,就是查询单点权值. ...
- 数据库事务与MySQL事务总结
事务特点:ACID 从业务角度出发,对数据库的一组操作要求保持4个特征: Atomicity(原子性):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败 ...
- 2018年5月15日的sqlite安装和数据库记录
sqlite数据库安装在d:\sqlite_files运行sqlite3查看数据表,命令,.tables 数据库文件 d:\sqlite_files\device.db create table de ...
- Kubernetes中强制删除Pod、namespace
Kubernetes中强制删除Pod.namespace 解决方法 可使用kubectl中的强制删除命令 # 删除POD kubectl delete pod PODNAME --force --gr ...
- Java中包装类Test类测试出错的解决方法(JUnit5)
import org.junit.jupiter.api.Test; public class TestJunit { public static void main(String[]args) { ...
- ASP.NET Core 监听SQL Server数据库的实时信息
1.开发环境: 开发工具:Visual Studio 2019 数据库:SQL Server2012 开发环境:.Net Core 3.1 2.使用技术: Signalr:实现消息推送 SqlDepe ...