日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

C# Quartz的配置

發(fā)布時間:2023/12/15 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 C# Quartz的配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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>

    <!--開始執(zhí)行一個調度-->
    <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("--執(zhí)行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();
                //將任務與觸發(fā)器關聯(lián)起來放到調度器中
                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>



可以關注本人的公眾號,多年經(jīng)驗的原創(chuàng)文章共享給大家。



總結

以上是生活随笔為你收集整理的C# Quartz的配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。