C# Quartz的配置

1. 介绍

Quartz为后台工作者提供了得便利,我们下面介绍一下它的配置。本文配置主要针对服务程序的配置。

但是在做下面配置之前,要安装包

Install-Package Quartz

2. Quartz配置有两种方法,第一种是纯XML配置;第二种是抛弃XML文件配置,用纯代码配置。

2.1 Quartz下的纯XML配置

1)首先新建job配置XML文件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>TestJob</name>
      <group>TestJobGroup</group>
      <description>TestJobDescription</description>
      <job-type>FeiDuWindowService.Job.TestJob, FeiDuWindowService</job-type>
      <durable>true</durable>
      <recover>false</recover>
    </job>

    <trigger>
      <cron>
        <name>TestJobTrigger</name>
        <group>TestJobTriggerGroup</group>
        <job-name>TestJob</job-name>
        <job-group>TestJobGroup</job-group>
        <cron-expression>*/5 * * * * ?</cron-expression>
      </cron>
    </trigger>
    <!--结束一个调度-->

  </schedule>
</job-scheduling-data>

说明: job标签下面的name与group随便怎么写。注意job-type标签要写类的具体包路径,与项目名称。

trigger下面的cron-expression标签说明每5秒钟运行一次。

2)新建job类,继承IJob

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FeiDuWindowService.Helper;
using Quartz;

namespace FeiDuWindowService.Job
{
    public class TestJob:IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            try
            {
                LogHelper.InfoLog.InfoFormat("--执行job-- " + DateTime.Now);
            }
            catch (Exception e)
            {

            }
        }
    }
}

3)项目启动时,配置加载xml文件

           //加载xml job的配置文件
             NameValueCollection properties = new NameValueCollection();
            properties["quartz.plugin.xml.type"] = "Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz";
            properties["quartz.plugin.xml.fileNames"] = "~/Job/quartz_jobs.xml";
            //开启job
            ISchedulerFactory sf = new StdSchedulerFactory(properties);
            IScheduler sched = sf.GetScheduler();
            if(!sched.IsStarted)
                sched.Start();

2.2 Quartz的纯代码

用纯代码很简单,什么都不用配置,直接上代码

            ISchedulerFactory factory = new StdSchedulerFactory();
            IScheduler scheduler = factory.GetScheduler();
            if (!scheduler.IsStarted)
            {
                IJobDetail testjob = JobBuilder.Create<TestJob>().WithIdentity("TestJob", "TestJobGroup").Build();
                //将任务与触发器关联起来放到调度器中
                ITrigger trigger = TriggerBuilder.Create().StartNow().WithIdentity("TestjobTrigger", "TestjobTriggerGroup").WithCronSchedule("*/5 * * * * ?").Build();
                scheduler.ScheduleJob(testjob, trigger);

                scheduler.Start();

                LogHelper.InfoLog.Info("--启动job OnStart--");
            }

3. job在App.config的配置

可以不加这个配置,但是为了易于管理,我们一般把下面的JOB配置加到App.config下面

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <configSections>
    <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
    </sectionGroup>
  </configSections>
  <common>
    <logging>
      <factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
        <arg key="showLogName" value="true"/>
        <arg key="showDataTime" value="true"/>
        <arg key="level" value="INFO"/>
        <arg key="dateTimeFormat" value="HH:mm:ss:fff"/>
      </factoryAdapter>
    </logging>
  </common>

  <quartz>
    <add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler"/>

    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz"/>
    <add key="quartz.threadPool.threadCount" value="10"/>
    <add key="quartz.threadPool.threadPriority" value="2"/>

    <add key="quartz.jobStore.misfireThreshold" value="60000"/>
    <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz"/>

    <add key="quartz.dbprovider.customProvider.productName" value="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0"/>
    <add key="quartz.dbprovider.customProvider.assemblyName" value="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <add key="quartz.dbprovider.customProvider.connectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <add key="quartz.dbprovider.customProvider.commandType" value="System.Data.SqlClient.SqlCommand, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <add key="quartz.dbprovider.customProvider.parameterType" value="System.Data.SqlClient.SqlParameter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <add key="quartz.dbprovider.customProvider.commandBuilderType" value="System.Data.SqlClient.SqlCommandBuilder, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <add key="quartz.dbprovider.customProvider.parameterDbType" value="System.Data.SqlDbType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <add key="quartz.dbprovider.customProvider.parameterDbTypePropertyName" value="SqlDbType" />
    <add key="quartz.dbprovider.customProvider.parameterNamePrefix" value="@" />
    <add key="quartz.dbprovider.customProvider.exceptionType" value="System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <add key="quartz.dbprovider.customProvider.useParameterNamePrefixInParameterCollection" value="true" />
    <add key="quartz.dbprovider.customProvider.bindByName" value="true" />
    <add key="quartz.dbprovider.customProvider.dbBinaryTypeName" value="Image" />

  </quartz>

</configuration>
时间: 2024-10-23 04:21:16

C# Quartz的配置的相关文章

Quartz动态配置表达的方法

在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度.有关调度的实现我就第一就想到了Quartz这个开源调度组件,因为很多项目使用过,Spring结合Quartz静态配置调度任务时间,非常easy.比如:每天凌晨几点定时运行一个程序,这只要在工程中的spring配置文件中配置好spring整合quartz的几个属性就好. Spring配置文件 Xml代码?? <bean?id="jobDetail"?class="org.springframework.

Quartzs -- Quartz.properties 配置

Quartzs -- Quartz.properties 配置 文件加载位置 默认:优先顺序 Classpath:quartz.properties --> org/quartz/quartz.properties (quartz lib) 改变默认:设置一个系统属性"org.quartz.properties"指向对应的properties文件 程序中显示指定 在StdSchedulerFactory.getScheduler()之前使用StdSchedulerFactory.

quartz spring配置实例代码demo下载

原文:quartz spring配置实例代码demo下载 源代码下载地址:http://www.zuidaima.com/share/1550463459560448.htm

SPring中quartz的配置(可以用实现邮件定时发送,任务定时执行,网站定时更新等)

http://www.cnblogs.com/kay/archive/2007/11/02/947372.html 邮件或任务多次发送或执行的问题: 1.<property name="concurrent" value="false" />可以用于防止任务多次执行 2.将quartz的配置单独出来,防止tomcat加载spring. 具体做法:http://blog.csdn.net/zhujianpengzha/article/details/814

quartz的配置

Quartz.Net中的概念:计划者(IScheduler).工作(IJob).触发器(Trigger).给计划者一个工作,让他在Trigger(什么条件下做这件事)触发的条件下执行这个工作 将要定时执行的任务的代码写到实现IJob接口的Execute方法中即可,时间到来的时候Execute方法会被调用. CrondTrigger是通过Crond表达式设置的触发器,还有 SimpleTrigger等简单的触发器.可以通过TriggerUtils的MakeDailyTrigger.MakeHour

Spring中Quartz的配置

软件152苏锐 Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在Spring中怎样配置Quartz:首先我们来写一个被调度的类: package com.kay.quartz;public class QuartzJob{ public void work()    {    System.out.println("Quartz的任务调度!!!");    }} Spring的配置文件: <?xml version="1.

quartz任务调度配置 解决jobDetail身份标识存在问题

applicationContext.xml配置:每五秒轮询一次.注意:周和日期不能同时为通配符”*“ 1 <bean id="planInfoServiceImpl" class="com.xxx.xxx"></bean> 2 <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailF

spring quartz定时任务配置【基础篇】

一个定时执行的job package dk.spring.quartz; import java.util.Date; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; /** * 使用spring集成的quartz调度 */ public class QuartzTe

quartz + spring 配置示例

<!-- 配置job定时任务类 --> <bean id="triggerCalculateLecturerProfitJob" class="com.itzixi.quartz.job.CalculateLecturerProfitJob"></bean> <!-- 配置jobDetail --> <bean id="triggerCalculateLecturerProfitJobMethod&qu