zoukankan      html  css  js  c++  java
  • Quartz.NET总结(三)Quartz 配置

    转载自:http://www.cnblogs.com/zhangweizhong/p/4894354.html

    前两篇文章,已经介绍了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进行设置。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    # 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两个组要的节点。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    <?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的配置。

  • 相关阅读:
    模拟赛总结
    2018.04.06学习总结
    2018.04.06学习总结
    Java实现 LeetCode 672 灯泡开关 Ⅱ(数学思路问题)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
  • 原文地址:https://www.cnblogs.com/zxtceq/p/7300563.html
Copyright © 2011-2022 走看看