Quartz基础使用
Quartz基本组成部分:
- 调度器:Scheduler
- 任务:JobDetail
- 触发器:Trigger,包括SimpleTrigger和CronTrigger
.
using Quartz;
using Quartz.Impl;
using System;
using System.Threading.Tasks; namespace QuartzDemo1
{
/// <summary>
/// 我的任务
/// </summary>
class MyJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
JobDataMap jobdata = context.JobDetail.JobDataMap;
JobDataMap triggerdata= context.Trigger.JobDataMap;
Console.WriteLine($"JobKey:{jobdata["JobKey"]},TriggerKey:{triggerdata["TriggerKey"]},{DateTime.Now.ToString()}");
return Task.CompletedTask;
}
}
class Program
{
static async Task Main(string[] args)
{
IScheduler scheduler;/*****************this's Scheduler********************/
{
//调度器工厂
StdSchedulerFactory factory = new StdSchedulerFactory();
scheduler = await factory.GetScheduler(); //调度器
}
IJobDetail job; /*****************this's Ijob********************/
{
//创建一个工作任务 ,myjob1是名称,mygroup1是组名。
job = JobBuilder.Create<MyJob>().WithIdentity("myjob1", "mygroup1")
.UsingJobData("JobKey", "JobValue") //传数据
.Build();
//..... 可以创建多个Job然后通过 group进行分组
//例如: 有7个接口 A/B/C/O/X/Y/Z
//ABC分别接收ABC类型订单(已确定执行时间一致) 每天06:00执行
//XYZ分别发送XYZ订单(已确定执行时间一致) 每天12:00/22:00点
//O接口定时清理数据 每天23:00执行
//则可以把 ABC分为 ABCGroup XYZ分为XYZGroup O单独分为Ogroup;
}
ITrigger trigger; /*****************this's Itrigger********************/
{
//触发器
trigger = TriggerBuilder.Create()
.WithIdentity("mytrigger1", "mygroup1") //定时器与JobGroup对应
//.WithCronSchedule("0/5 * * * * ?") //5秒执行一次 //同下 (定时)
.WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever()) //同上(定时)
.UsingJobData("TriggerKey", "TriggerValue") //传数据
.Build();
}
//将任务与触发器添加到调度器中
_ = scheduler.ScheduleJob(job, trigger);
_ = scheduler.Start();
Console.Read();
}
}
}
Quartz基础使用的更多相关文章
- Quartz基础调度框架-第二篇服务
很多应用场景Quartz运行于Windows服务 Conf 在这个基本结构里 是用来存放配置 和上一篇 控制台运行的一样的结构 jobs.xml 的配置清单 <!-- 任务配置--> & ...
- Quartz基础调度框架-第一篇控制台
Quartz基础调度框架 Quartz核心的概念:scheduler任务调度.Job任务.Trigger触发器.JobDetail任务细节 结构 Conf 在这个基本结构里 是用来存放配置 publi ...
- Quartz基础+实例
1. 介绍 Quartz体系结构: 明白Quartz怎么用,首先要了解Scheduler(调度器).Job(任务)和Trigger(触发器)这3个核心的概念. 1. Job: 是一个接口,只定义一个方 ...
- Quartz基础知识了解(一)
一.QuartZ是什么? 二.获取 三.核心接口 Scheduler - 与调度程序交互的主要API. Job - 由希望由调度程序执行的组件实现的接口. JobDetail - 用于定义作业的实例. ...
- SpringBoot之Quartz基础
前言:由于我们本项目选用的Springboot来整合Quartz,官方给我们提供了启动器所以很简单.在以前的版本我们想要使用Quartz需要引入的依赖如下: <dependency> &l ...
- Quartz.Net 调度框架配置介绍
在平时的工作中,估计大多数都做过轮询调度的任务,比如定时轮询数据库同步,定时邮件通知等等.大家通过windows计划任务,windows服务等都实现过此类任务,甚至实现过自己的配置定制化的框架.那今天 ...
- 10 -- 深入使用Spring -- 5...2 在Spring中使用Quartz
10.5.2 在Spring中使用Quartz Spring 的任务调度抽象层简化了任务调度,在Quartz基础上提供了更好的调度抽象.本系统使用Quartz框架来完成任务调度,创建Quartz的作业 ...
- Quartz使用及注意事项
Quartz使用及注意事项 前提:目前由于公司业务决定,大量使用Quartz,每天固定的时间点执行相应的业务逻辑,,几十个时间点应该是有的,某一个时间点如果没有执行带来的问题是巨大的.Quartz的稳 ...
- Quartz-第一篇 认识Quartz
1.什么是Quartz Quartz是一个任务调度框架,借助Cron表达式,Quartz可以支持各种复杂的任务调度.JDK中也提供了简单的任务调度,java.util.Timer. Quartz的三大 ...
随机推荐
- 牛客多校第九场 && ZOJ3774 The power of Fibonacci(二次剩余定理+斐波那契数列通项/循环节)题解
题意1.1: 求\(\sum_{i=1}^n Fib^m\mod 1e9+9\),\(n\in[1, 1e9], m\in[1, 1e4]\) 思路1.1 我们首先需要知道斐波那契数列的通项是:\(F ...
- codevs1068乌龟棋-四维DP,五维如何缩减一维
我们从起点x开始暴力枚举所有决策 于是可以得到如下转移 void dfs(int x,int A,int B,int C,int D,int y) { if (x==n) {ans=max(ans,y ...
- Vue & Sentry
Vue & Sentry config.errorHandler https://cn.vuejs.org/v2/api/#errorHandler Vue.config.errorHandl ...
- PyCharm 中文 字符 python 报错 的 完美 解决方案!
PyCharm 中文 字符 python 报错 的 完美 解决方案! #_*_ coding:utf-8_*_ https://www.python.org/dev/peps/pep-0263/ 到p ...
- Node.js Spider
Node.js Spider How To Write a Spider using JavaScript, in order to auto download some svg images for ...
- Node.js & ES Modules & Jest
Node.js & ES Modules & Jest CJS & ESM CommonJS https://en.wikipedia.org/wiki/CommonJS ht ...
- how to write a node cli tool
how to write a node cli tool https://www.google.com/search?q=how+to+node+cli+tool&oq=how+to+node ...
- Nestjs 修改dist目录
修改tsconfig.json { "compilerOptions": { "outDir": "./server-dist", // 这 ...
- HANNAH WHITE:从Facebook谈坚持
HANNAH WHITE于1993年毕业于加州斯坦福大学,被美国多家知名杂志评为最值得关注经济管理学杰出人才,2006年-2009年担任Doll资本管理公司部门主管,2009年-2013年担任Doll ...
- JDK源码阅读-FileDescriptor
本文转载自JDK源码阅读-FileDescriptor 导语 操作系统使用文件描述符来指代一个打开的文件,对文件的读写操作,都需要文件描述符作为参数.Java虽然在设计上使用了抽象程度更高的流来作为文 ...