前两篇文章,已经介绍了Quartz.NET的使用和Cron表达式表达式的写法,今天说一说Quartz的配置,Quartz相关的配置有三个quartz.config、quartz_jobs.xml、log4net.config。其中quartz.config是基本的配置, quartz_jobs.xml是相关的job 任务配置文件,log4net.config则是日志记录的配置。

1.  quartz.config ,是Quartz.NET是基本的配置,主要是配置quartz_jobs.xml 的路径,及其他相关的参数。默认的quartz任务配置文件为quartz_jobs.xml,在quartz服务的根目录下,可以通过quartz.config中quartz.plugin.xml.fileNames = ~/quartz_jobs.xml进行设置。

# You can configure your scheduler in either <quartz> configuration section

# or in quartz properties file

# Configuration section has precedence

quartz.scheduler.instanceName = ServerScheduler

# configure thread pool info

quartz.threadPool.type = Quartz.Simpl.SimpleThreadPool, Quartz

quartz.threadPool.threadCount = 10

quartz.threadPool.threadPriority = Normal

# job initialization plugin handles our xml reading, without it defaults are used

quartz.plugin.xml.type = Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz

quartz.plugin.xml.fileNames = ~/quartz_jobs.xml

# export this server to remoting context

quartz.scheduler.exporter.type = Quartz.Simpl.RemotingSchedulerExporter, Quartz

quartz.scheduler.exporter.port = 555

quartz.scheduler.exporter.bindName = QuartzScheduler

quartz.scheduler.exporter.channelType = tcp

quartz.scheduler.exporter.channelName = httpQuartz

2. quartz_jobs.xml,是相关的job 任务配置文件。主要是有job和trigger两个组要的节点。

<?xml version="1.0" encoding="UTF-8"?>

<!-- This file contains job definitions in schema version 2.0 format -->

<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>

    <!--定义Job1-->

    <job>

      <name>Job1</name>

      <group>JobGroup</group>

      <description>Quartz Job1</description>

      <job-type>Quartz.Net.Jobs.Job1,Quartz.Net.Jobs</job-type>

      <durable>true</durable>

      <recover>false</recover>

    </job>

    <!--定义Job2-->

    <job>

      <name>Job2</name>

      <group>JobGroup</group>

      <description>Quartz Job2</description>

      <job-type>Quartz.Net.Jobs.Job2,Quartz.Net.Jobs</job-type>

      <durable>true</durable>

      <recover>false</recover>

    </job>

    <!--定义Job1 触发器 每30秒执行一次Job1任务-->

    <trigger>

      <cron>

        <name>Job1Trigger</name>

        <group>JobTriggerGroup</group>

        <job-name>Job1</job-name>

        <job-group>JobGroup</job-group>

        <cron-expression>0/30 * * * * ?</cron-expression>

      </cron>

    </trigger>

    <!--定义Job2 触发器 每分钟执行一次Job2任务-->

    <trigger>

      <cron>

        <name>Job2Trigger1</name>

        <group>JobTriggerGroup</group>

        <job-name>Job2</job-name>

        <job-group>JobGroup</job-group>

        <cron-expression>0 * * * * ?</cron-expression>

      </cron>

    </trigger>

  </schedule>

</job-scheduling-data>

job 任务,这个节点是用来定义每个具体的任务的,多个任务请创建多个job节点即可。

 

1. name  任务名称,同一个group中多个job的name不能相同,如:<name>Job1</name>

2. group 任务所属分组,用于标识任务所属分组,如:<group>JobGroup</group>

3. job-type 任务的具体类型及所属程序集,实现了IJob接口的包含完整命名空间的类名,程序集名称,如: <job-type>Quartz.Net.Jobs.Job1,Quartz.Net.Jobs</job-type>

其余节点按照默认设置即可。

trigger 任务触发器,主要定义在什么时间,以何种方式触发任务(job),同一个job可以定义多个trigger ,各个trigger 各自独立的执行调度,每个trigger 中必须定义一种触发器类型(calendar-interval、simple、cron)。

calendar-interval使用比较少,一般都是simple和cron,这里就不做说明。

simple 简单任务的触发器,可以调度用于重复执行的任务

1. name 触发器名称,同一个分组中的名称必须不同

2. group 触发器组

3. job-name 要调度的任务名称,该job-name必须和对应job节点中的name完全相同 ,如:<job-name>Job1</job-name>

4. job-group 调度任务(job)所属分组,该值必须和job中的group完全相同,如:<job-group>JobGroup</job-group>

5. repeat-count  任务执行次数,如:<repeat-count>-1</repeat-count>表示无限次执行,<repeat-count>10</repeat-count>表示执行10次

6. repeat-interval 任务触发间隔,单位为毫秒,如:<repeat-interval>10000</repeat-interval> 每10秒执行一次

cron 复杂任务触发器,主要使用cron表达式定制任务调度,一般用的较多的都是cron触发器。关于cron表达式的写法,请参考前一篇博客《Quartz.NET总结(二)CronTrigger和Cron表达式》

1. name 触发器名称,同一个分组中的名称必须不同

2. group 触发器组

3. description 触发器描述

4. job-name 要调度的任务名称,注意该job-name必须和对应job节点中的name完全相同,如:<job-name>Job1</job-name>

5. job-group 调度任务(job)所属分组,该值必须和job中的group完全相同,如:<job-group>JobGroup</job-group>

6. cron-expression 任务执行的cron表达式,如:<cron-expression>0/30 * * * * ?</cron-expression> 每30秒执行一次

其余节点按照默认设置即可。

根据实际项目中的需要灵活配置quartz_jobs.xml,不需要再进行额外的修改其他后台代码,实现灵活的多任务调度,需要注意的是修改了quartz_jobs.xml文件后,quartz服务默认不会重新加载该文件,需要重启下服务才行。

3. log4net.config

(略),请参考其他关于log4net的配置。

Quartz.NET总结(三)如配置jobs的更多相关文章

  1. quartz开源作业调度框架的配置

    quartz开源作业调度框架的job服务实现,Quartz是一个完全由java编写的开源作业调度框架,使用时候需要创建一个实现org.quartz.Job接口的java类,Job接口包含唯一的方法: ...

  2. spring Quartz多个定时任务的配置

    Quartz多个定时任务的配置 1,配置文件与spring整合,需要在spring 的总配置中一入或者在web.xml中spring监听中加上 ztc_cp-spring-quartz.xml 注:定 ...

  3. EBS中启用OAF页面个性化三个配置

    启用OAF页面个性化三个配置(Profiles) FND:诊断英文为FND: Diagnostics,用于设置是否显示“关于此页” 个性化自助定义英文为Personalize Self-Service ...

  4. c3p0三种配置方式(automaticTestTable)

    c3p0的配置方式分为三种,分别是http://my.oschina.net/lyzg/blog/551331.setters一个个地设置各个配置项2.类路径下提供一个c3p0.properties文 ...

  5. Linux操作系统下三种配置环境变量的方法

    现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法. 1.修改/etc/profile文件 如果你的计算机仅仅作 ...

  6. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(三):配置ActiveXForm运行环境

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  7. struts2拦截器interceptor的三种配置方法

    1.struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts> <package name="struts2" extend ...

  8. Linux操作系统下三种配置环境变量的方法——转载

    来源:赛迪网 作者:millio       现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法. 1.修改/e ...

  9. tomcat下jndi的三种配置方式

    jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...

随机推荐

  1. Django之视图层与模板层

    目录 视图层 小白必会三板斧 HttpResponse render redirect JsonResponse 前后端分离 FBV CBV 给CBV加装饰器 模板层 模板语法 模板传值 过滤器 语法 ...

  2. 规范git commit提交记录和版本发布记录

    在开发过程中我们一般都会用到git管理代码,在git commit提交代码时我们一般对git commit message随便写点简单的描述,可是随着项目参与人数的增多,发现提交的commit记录越来 ...

  3. 防止 window.open 被拦截

    window.open('/app/dashbuilder.html?' + group.id, '_blank'); // 一般_self不会被拦截 // 改为 let newTab = windo ...

  4. FastJson中JSONString与各个对象的的转换关系及API示例

    前言 JSON作为一种轻量级的数据交换格式,在我们日常的开发中使用十分广泛,就Java后端的开发工作中,JSON字符串与Java对象之间相互转换是常常遇到的操作. 虽然平时用到的挺多的,但是因为用于J ...

  5. c++-多态的练习

    多态的几个小练习 练习一 #include <iostream> #include <string> using namespace std; class Fu { publi ...

  6. How we implemented consistent hashing efficiently

    原文链接https://medium.com/ably-realtime/how-to-implement-consistent-hashing-efficiently-fe038d59fff2 我们 ...

  7. RBAC-权限管理设计

    1.RBAC(Role-Based Access Control)——基于角色的访问控制.简单来说每个角色有不同的权限,通过对用户赋予不同角色来赋予其对应权限. 2.RBAC0:最基本的用户角色多对多 ...

  8. 面试连环炮系列(十一):说说你们的分布式ID设计方案

    说说你们的分布式ID设计方案 我们采用Snowflake算法,生成一个64bit的数字,64bit被划分成多个段,分别表示时间戳.机器编码.序号. 41位的时间序列(精确到毫秒,41位的长度可以使用6 ...

  9. ReactNative: 使用对话框组件AlertIOS组件

    一.简介 在使用一款App的时候,经常会用到对话框进行信息的友好提示,一般简单要求性不高的时候我们可以使用web提供的alert实现即可.但是,对于需要交互性和美观性的对话框,alert就明显无法满足 ...

  10. JS reduce()方法详解,使用reduce数组去重

     壹 ❀ 引 稍微有了解JavaScript数组API的同学,对于reduce方法至少有过一面之缘,也许是for与forEach太强大,或者filter,find很实用,在实际开发中我至始至终没使用过 ...