• Quartz配置


    1.新建项目

    新建一个.NetFramework控制台引用程序。

    2.添加引用

    添加:

      Quartz

      Quartz.Jobs

      Quartz.Plugins

    3.添加Quartz.xml

     quartz_jobs.xml

    4.创建MyJob类

    添加一个类,实现IJob

    namespace QuartzDemo
    {
        class MyJob : IJob
        {
            public static int i = 0;
            public Task Execute(IJobExecutionContext context)
            {
                //做什么(例子:写文件)
                string path = AppDomain.CurrentDomain.BaseDirectory + DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".txt";      
                File.WriteAllText(path, $"这是第{i++}次执行");
                return Task.CompletedTask;
            }
        }
    }

    5.配置Quartz.xml

    可以进行多配置,C+V +稍微改动

     源码:

    <?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>
        <!--Job 任务配置-->
        <job>
          <name>MyJob</name>
          <group>MyJobGroup</group>
          <description>任务</description>
          <job-type>QuartzDemo.MyJob,QuartzDemo</job-type>
          <durable>true</durable>
          <recover>false</recover>
        </job>
        <trigger>
          <!--cron:https://cron.qqe2.com/-->
          <cron>
            <name>JobATrigger</name>
            <group>ABCGroupTrigger</group>
            <job-name>MyJob</job-name>
            <job-group>MyJobGroup</job-group>
            <!--<start-time>2015-01-22T00:00:00+08:00</start-time>-->
            <cron-expression>0/3 * * * * ?</cron-expression>
          </cron>
        </trigger>
      </schedule>
    </job-scheduling-data>

    6.Main方法中启动调度器

    var scheduler =Task.Run(() => StdSchedulerFactory.GetDefaultScheduler()).Result;
    或者创建一个类 来控制启动停止。。。。等方法。
    namespace QuartzDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                var scheduler = new StdSchedulerFactory().GetScheduler().Result;
                scheduler.Start();//启动
                Thread.Sleep(20000); //等待20秒
                scheduler.Shutdown();//停止
            }
        }
    }

    7.添加Config(Quartz.config>App.config>Web.config)

    什么项目就写在对应的配置文件中。也可以单独通过 Quartz.config控制   或者   MVC直接写在Web.config   WINForm写在App.config

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="quartz" type="System.Configuration.NameValueSectionHandler" />
      </configSections>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
        </startup>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
      <quartz>
        <!-- 指定调度器的实例名称 -->
        <add key="quartz.scheduler.instanceName" value="TestHandler" />
        <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool,Quartz" />
        <!-- 设置线程池的最大线程数量 -->
        <add key="quartz.threadPool.threadCount" value="10" />
        <!-- 设置作业中每个线程的优先级,可取 System.Threading.ThreadPriority 中的枚举-->
        <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.serializer.type" value="binary" />
        <!-- Plugin配置 -->
        <add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin,Quartz.Plugins" />
        <!-- 作业配置文件路径及名称 -->
        <add key="quartz.plugin.xml.fileNames" value="~/quartz_jobs.xml" />
      </quartz>
    </configuration>

    8.运行项目

    项目结构:

    Bin/Debug中的定时写的事情。仔细看时间,除第一次外,都是3秒一次。通过Quartz.xml的Trigger时间管理大师管控

     

  • 相关阅读:
    opentsdb安装部署
    python发送邮件(html)例子
    python查库写库例子
    获取rds的cpu和内存使用情况
    数据库损坏的情况下如何获取到dbid
    grafana安装升级部署
    Specified key was too long
    mysql动态执行sql批量删除数据
    kafka删除topics
    cratedb导入json文件
  • 原文地址:https://www.cnblogs.com/Zingu/p/14544193.html
Copyright © 2020-2023  润新知