Quartz.NET总结(三)如配置jobs
前两篇文章,已经介绍了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的更多相关文章
- quartz开源作业调度框架的配置
quartz开源作业调度框架的job服务实现,Quartz是一个完全由java编写的开源作业调度框架,使用时候需要创建一个实现org.quartz.Job接口的java类,Job接口包含唯一的方法: ...
- spring Quartz多个定时任务的配置
Quartz多个定时任务的配置 1,配置文件与spring整合,需要在spring 的总配置中一入或者在web.xml中spring监听中加上 ztc_cp-spring-quartz.xml 注:定 ...
- EBS中启用OAF页面个性化三个配置
启用OAF页面个性化三个配置(Profiles) FND:诊断英文为FND: Diagnostics,用于设置是否显示“关于此页” 个性化自助定义英文为Personalize Self-Service ...
- c3p0三种配置方式(automaticTestTable)
c3p0的配置方式分为三种,分别是http://my.oschina.net/lyzg/blog/551331.setters一个个地设置各个配置项2.类路径下提供一个c3p0.properties文 ...
- Linux操作系统下三种配置环境变量的方法
现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法. 1.修改/etc/profile文件 如果你的计算机仅仅作 ...
- AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(三):配置ActiveXForm运行环境
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- struts2拦截器interceptor的三种配置方法
1.struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts> <package name="struts2" extend ...
- Linux操作系统下三种配置环境变量的方法——转载
来源:赛迪网 作者:millio 现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法. 1.修改/e ...
- tomcat下jndi的三种配置方式
jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...
随机推荐
- Django之视图层与模板层
目录 视图层 小白必会三板斧 HttpResponse render redirect JsonResponse 前后端分离 FBV CBV 给CBV加装饰器 模板层 模板语法 模板传值 过滤器 语法 ...
- 规范git commit提交记录和版本发布记录
在开发过程中我们一般都会用到git管理代码,在git commit提交代码时我们一般对git commit message随便写点简单的描述,可是随着项目参与人数的增多,发现提交的commit记录越来 ...
- 防止 window.open 被拦截
window.open('/app/dashbuilder.html?' + group.id, '_blank'); // 一般_self不会被拦截 // 改为 let newTab = windo ...
- FastJson中JSONString与各个对象的的转换关系及API示例
前言 JSON作为一种轻量级的数据交换格式,在我们日常的开发中使用十分广泛,就Java后端的开发工作中,JSON字符串与Java对象之间相互转换是常常遇到的操作. 虽然平时用到的挺多的,但是因为用于J ...
- c++-多态的练习
多态的几个小练习 练习一 #include <iostream> #include <string> using namespace std; class Fu { publi ...
- How we implemented consistent hashing efficiently
原文链接https://medium.com/ably-realtime/how-to-implement-consistent-hashing-efficiently-fe038d59fff2 我们 ...
- RBAC-权限管理设计
1.RBAC(Role-Based Access Control)——基于角色的访问控制.简单来说每个角色有不同的权限,通过对用户赋予不同角色来赋予其对应权限. 2.RBAC0:最基本的用户角色多对多 ...
- 面试连环炮系列(十一):说说你们的分布式ID设计方案
说说你们的分布式ID设计方案 我们采用Snowflake算法,生成一个64bit的数字,64bit被划分成多个段,分别表示时间戳.机器编码.序号. 41位的时间序列(精确到毫秒,41位的长度可以使用6 ...
- ReactNative: 使用对话框组件AlertIOS组件
一.简介 在使用一款App的时候,经常会用到对话框进行信息的友好提示,一般简单要求性不高的时候我们可以使用web提供的alert实现即可.但是,对于需要交互性和美观性的对话框,alert就明显无法满足 ...
- JS reduce()方法详解,使用reduce数组去重
壹 ❀ 引 稍微有了解JavaScript数组API的同学,对于reduce方法至少有过一面之缘,也许是for与forEach太强大,或者filter,find很实用,在实际开发中我至始至终没使用过 ...