Quartz开发-基础开发

IOS开发-基础-One UI基础-第一天人生就像卫生纸,没事的时候尽量少扯;时间就像卫生纸,看着挺多,用着挺少…学前需知学习内容 UI 基础控件:UIButton、UIImageView、UILabel、UIView等 高级控件:UITableView、UICollectionView 屏幕适配:Autoresizing、Autolayout、Sizeclass、Massonry 多控制器管理:UINavigati 阅读详情
开发环境

.net 4.5.1
quartz.dll v2.4.1.0 依赖下面的dll
Common.Loggin.dll v3.3.1.0 依赖下面的dll
Common.Loggin.Core.dll v3.3.1.0
本次教程只介绍基于quartz_jobs.xml配置文件方式的开发,这也是简单且常见的方式

Quartz核心概念

1、Job 表示一个工作任务,业务代码的执行入口,业务代码需要继承Quartz.IJob接口并实现Execute方法,此方法即业务代码的入口函数
2、JobDetail 表示一个上体的可执行的调度程序
3、Trigger 代表一个调度参数的配置,调度方案与执行计划
4、Scheduler 代表一个调度容器,可以注册多个JobDetail和Trigger
5、SchedulerPlugin 调度插件,自定义插件需要继承 Quartz.Spi.ISchedulerPlugin
6、SchedulerListener 调度监听器,自定义需要继承 Quartz.ISchedulerListener
7、TriggerListener 触发器监听器,自定义需要继承 Quartz.ITriggerListener
8、JobListener 工作任务监听器,自定义需要继承 Quartz.IJobListener

业务开发介绍

这一块的基础实现其实很简单,只需要继承Quartz.IJob类,并实际Execute方法,此方法是业务代码执行的入口,将业务代码写好,并配置好quartz_jobs.xml文件即可运行

示例:
1、新建一个类库项目,并引入Quartz.dll

using System;
using Quartz;

namespace QuartzTestJob
{
    public class TestJob : Quartz.IJob
    {
        public void Execute(IJobExecutionContext context)
        {
        	Console.WriteLine("执行业务代码");
            Console.WriteLine("这是单独DLL文件的业务代码-v1.0.2");
        }
    }
}

2、编译上面的代码并生成dll文件,即完成了最简单的业务代码部分
3、配置工作任务与触发器 quartz_jobs.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
  <processing-directives>
    <overwrite-existing-data>true</overwrite-existing-data>
  </processing-directives>
  <schedule>
    <job>
      <name>TestJob2Job</name>
      <group>TestJob2JobGroup</group>
      <description>测试JOB</description>
      <job-type>QuartzTestJob.TestJob,QuartzTestJob</job-type>
      <durable>true</durable>
      <recover>false</recover>
    </job>
    <trigger>
        <cron>
        	<name>TestJob2Trigger</name>
        	<group>TestJob2TriggerGroup</group>
        	<job-name>TestJob2Job</job-name>
        	<job-group>TestJob2JobGroup</job-group>
        	<start-time>2015-01-01T00:00:00+08:00</start-time>
       	 	<cron-expression>0 */1 * * * ? </cron-expression>
      </cron> 
    </trigger>
  </schedule>
</job-scheduling-data>

配置介绍:

一个Job块对应一个Trigger块,不然不会工作,具体工作原理可通过反编译Quartz.dll文件,看看Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin 这个类的代码,他是怎么解析这个配置文件的,我没去研究。

JOB 块

name: job的名称,必须全局唯一
group:job的分组,quartz有按组暂停job的能力,非必填,Quartz会自动生成,下面的相关的也类型
job-type: 这个是业务dll的Type,基于C#的反射功能完成,分为两段,第一段是完整的类型名,包含:命令空间,类名,第二段我的理解应该是dll文件名称,刚开始研究的时候就犯过这个错误,dll文件名和命令空间名称不一致,导致代码一直不执行,又不报错,完全不知道原因。

trigger 块

调度类型,共有四种类型,常用的是cron和simple这两种,
cron 类似于Linux的计划任务那种 0 0/2 * * * ?
simple 可以设置执行次数和执行间隔,两种的配置格式以示例一样,

cron块

name: 触发器名称,必须唯一
group:分组,非必填
job-name: 关联的job名称
job-group:关联的job分组,非必填
start-time: 开始日期与时间
cron-expression: 调度计划,可以参考https://www.w3cschool.cn/quartz_doc/quartz_doc-lwuv2d2a.html

simple块

name: 触发器名称,必须唯一
group:分组,非必填
job-name: 关联的job名称
job-group:关联的job分组,非必填
repeat-count:执行次数,-1 代表永不停止
repeat-interval:执行间隔,单位毫秒

4、新建一个控制台项目,并引入Quartz.dll,在main方法中初始化Scheduler并启动即可运行代码了

using Quartz;
using Quartz.Impl;
namespace QuartzTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Quartz.IScheduler scheduler = Quartz.Impl.StdSchedulerFactory.GetDefaultScheduler();
            scheduler.Start();
        }

    }

5、quartz.conf 文件介绍

这是quartz的配置文件,介绍几个常见的参数,一般下载回来的包里面都已经有默认设置了,无需修改

#调度容器的实例名称,很少使用
quartz.scheduler.instanceName = QuartzTest
#调度容器内的工作线程引用的类型
quartz.threadPool.type = Quartz.Simpl.SimpleThreadPool, Quartz
#工作线程数量,可根据自己的任务数量调大,以防任务数量太多,有些任务无线程可用
quartz.threadPool.threadCount = 10
#优先级设置,默认吧。不知道怎么配置
quartz.threadPool.threadPriority = Normal

#这是官方自带的插件,用来解析我们在quartz_jobs.xml中配置的任务与触发器,
quartz.plugin.xml.type = Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz
#配置文件的名称
quartz.plugin.xml.fileNames = ~/quartz_jobs.xml
引用参考

https://www.w3cschool.cn/quartz_doc/
http://www.quartz-scheduler.org/ 这个在国内打开可能很慢

xxl-job 基于Quartz 的分布式任务调度平台 介绍 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 项目git地址 | 项目首页 搭建项目、了解架构可以在项目官网学习。本文只做加强补充,如果没有涉及到的点可以提出,继续完善。... 阅读详情

相关推荐

C# Quartz作业调度配置

什么是Quartz Quartz是是一个开源的作业调度框架,Quartz根据用户设定的时间规则来执行作业,使用场景:在平时的工作中,估计大多数都做过轮询调度的任务,比如定时轮询数据库同步,定时邮件通知、定时关闭网上商城的用户还未支付的订单等等。 Quartz运用场景 作业场景:公司商城平台中客户未支付的订单超过半个小时未支付就要清理掉 1) . 数据库中订单主表主要字段如下: 2) .下

u010855333的博客 1万+

Quartz-job的quartz.properties配置文件说明

Quartz-Job的quartz.properties配置文件说明,此文件在quartz的jar包有,可直接拿过来使用,另可根据需要进行扩充;如果项目中没有对该配置文件重写,则默认会加载jar包中的。 # Default Properties file for use by StdSchedulerFactory # to create a Quartz Scheduler Instance,

sanfye的专栏 2万+

C#Quartz定时任务

C#编写的定时任务, 开发环境vs2010, demo可以直接运行, 所需的dll依赖库在bin目录下

Quartz开发-插件开发

开发环境 .net 4.5.1 quartz.dll v2.4.1.0 依赖下面的dll Common.Loggin.dll v3.3.1.0 依赖下面的dll Common.Loggin.Core.dll v3.3.1.0 Quartz核心概念 1、Job 表示一个工作任务,业务代码的执行入口,业务代码需要继承Quartz.IJob接口并实现Execute方法,此方法即业务代码的入口函...

小小诗人不写诗 446

Quartz.NET 入门

概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。 Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。 参考 官方学习文档:http://w...

weixin_34220179的博客 875

告别重复编码:Quartz组件化开发完全指南

Quartz是一个快速、功能齐全的静态网站生成器,它能将Markdown内容转换为功能完善的网站。本文将为你提供一份全面的Quartz组件化开发指南,帮助你告别重复编码,轻松构建个性化的静态网站。 ## 为什么选择组件化开发? 在传统的网页开发中,我们使用HTML来构建页面布局。然而,HTML不支持创建可重用的模板,当需要创建多个具有相似布局的页面时,就不得不重复编写相同的代码。这种方式不仅效

gitblog_00827的博客 974

10.多个Job,多个quartz_jobs.xml文件:quartz_jobs.xml,quartz_job2.xml

quartz_jobs.xml <quartz xmlns="http://www.opensymphony.com/quartz/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opensymphony.com/quartz/Jo

7216

iOS开发quartz 2d绘图基础

一、Quartz2D的简介 1⃣️Quart2D是CoreGraphic的一部分,基于C的API -图形的上下文(Graphics Context) 数据类型,封装了Quartz绘制图像到输出设备的信息 -Quartz 2D坐标系 -绘图顺序 -绘图方法 2⃣️内存管理 当出现Create、copy、retain时必须释放 二、简单使用

u011200206的专栏 400

【IOS 开发学习总结-OC-64】Quartz 2D绘图(4-1)——Quartz 2D绘图基础+点线模式

【IOS 开发学习总结-OC-64】Quartz 2D绘图(上)——Quartz 2D绘图基础+点线模式Quartz 2D绘图的核心API是CGContextRef,该API专门用于绘制各种图形。Quartz 2D绘图基础:CGContextRef使用Quartz 2D绘图的关键步骤有两步: 1. 获取CGContextRef; 2. 调用CGContextRef的方法进行绘图。不同场景下获取C

Albert的专栏 1402

Quartz

摘要:文章介绍了 Quartz 调度框架的基本概念、配置示例以及常见问题解决方案,并详细讲解了其核心原理、源码结构分析、常用注解说明以及主要组件功能与特点。同时提供了思维导图帮助读者更好地理解和掌握 Quartz 的整体架构。

Java_soul_GJH的博客 1123

Quartz框架从入门到实战

一、什么是quartz作业调度? Quartz是一个完全由java编写的开源作业调度框架。不要让作业调度这个术语吓着你。尽管Quartz框架整合了许多额外功能,比另一个调度框架Timer强大了许多,但是它使用也不难,下面我废话不多说,直奔主题。 二、quartz的体系结构。 1.quartz中使用了一下几种设计模式。 Builer模式 Factory模式 组件模式 链式写法 2.三个主要的概念

不清不慎的博客 1万+

quartz的认识

Java框架介绍:Quartz从入门到进阶(图) _天极网 http://edu.yesky.com/edupxpt/233/2209233.shtml#top

moxuan_zh的博客 216

Spring之Spring整合Quartz

一、添加Quartz依赖 //定时任务 compile group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.2' 二、Spring配置文件整合Quartz 1.配置Spring扫描的定时任务类 <context:component-scan base-package="com.tydic" /> 2.开启自动任务注解式驱动 三、定义定时任务类 @Component public class FlushA

weixin_42095871的博客 184

iOS开发 - Quartz2D绘图

转载自:http://blog.csdn.net/wangzi11322/article/details/47183053 Quartz 2D简介 是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成PDF 截图\裁剪图片 自定义

逢个场,作个戏 344

quartz.net 3.x版本如何通过xml文件进行Job配置

在2.x版本中,我们可以简单的在quartz.config文件中通过以下Xml配置方式来注册相应的Job以及触发器quartz.plugin.xml.type = Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz quartz.plugin.xml.fileNames = ~/quartz_jobs.xml 但在3.x中直接如此

sky 胡萝卜星星 6163

Quartz实现定时功能 job.xml文件的配置

使用Quartz实现定时功能        Quartz是一个完全由java编写的开源作业调度框架,具体的介绍可到http://www.opensymphony.com/quartz/官方网站查看。       Quartz的几个核心的接口和类为:       Job接口:自己写的“定时程序”实现此接口的void execute(JobExecutionContext 

liaomin416100569的专栏 3666

quartz_jobs.xml配置文件样例2--CronTrigger

Quartz-Job声明式编程2,上面一篇已经贴出了关于SimpleTrigger的样例,这篇贴出关于CronTrigger的样例,使用cron-expression指定日历执行时间,注意这些xml配置和1.8之前的配置有很大的变化,这两篇文章适用于1.8之后的版本 II.CronTrigger <job-scheduling-data xmlns="http://www.quartz-s

sanfye的专栏 8279

C# Quartz.dll使用

c#版本QUARTZ DEMO示例,其自带接口方法已足够全面。 注意 任务调度器:Scheduler,来自于Scheduler工厂,其会自动加载持久层的任务数据并等待启动。注意任务调度器关闭后不能重启,所以任务调度器应在进程关闭时调用。 任务:job,任务可以有多个触发器在,也就是任务可以有多个出发时间点。job停止会停止多触发器下的所有该job。 触发器:Trigger,用来设置时间,作...

·穆·的博客 977
上一篇: Linux下PHP使用 PHP_ODBC 连接微软SQLSERVER数据库
下一篇: Quartz开发-插件开发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值