摘要:本文主要向大家介绍了C#编程之C# Quartz的配置,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。
本文主要向大家介绍了C#编程之C# Quartz的配置,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。
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="//quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="//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>
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C#.NET频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号