.NET6控制台程序使用quartz.net

发布时间:2022-06-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了.NET6控制台程序使用quartz.net脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1.新建一个名为“ConsoleQuartz”的.NET6控制台程序。

2.nuget中安装Quartz和Quartz.Plugins,这2个DLL。

3.新建一个HelloQuartzJob类:

using Quartz;

namespace ConsoleQuartz
{
    public class HelloQuartzJob : IJob
    {
        public Task Execute(IJobExecutionContext context)
        {
            return Task.Factory.StartNew(() =>
            {
                Console.WriteLine("Hello Quartz.Net");
            });
        }
    }
}

4.新建一个HelloQuartzJob2:

using Quartz;

namespace ConsoleQuartz
{
    public class HelloQuartzJob2 : IJob
    {
        public Task Execute(IJobExecutionContext context)
        {
            return Task.Factory.StartNew(() =>
            {
                Console.WriteLine("Hello HelloQuartzJob2");
            });
        }
    }
}

5.修改Program.cs:

// See https://aka.ms/new-console-template for more information
using Quartz;
using Quartz.Impl;

Console.WriteLine("Hello, World!");

await MainAsync();
Console.ReadKey();

static async Task MainAsync()
{
    IScheduler Scheduler=await StdSchedulerFactory.GetDefaultScheduler();
    await Scheduler.Start();     
    Console.WriteLine("任务调度器已启动");
}

6.在编译输出目录(binDebugnet6.0)下新建一个quartz.config,内容如下:

# 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.type = Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz.Plugins
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 = 5552
quartz.scheduler.exporter.bindName = QuartzScheduler
quartz.scheduler.exporter.channelType = tcp
quartz.scheduler.exporter.channelName = httpQuartz

注意quartz.plugin.xml.type,使用的是Quartz.Plugins,老版本是Quartz,如果写成

Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz

会报错:

Quartz.SchedulerException:“SchedulerPlugin of type 'Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz' could not be instantiated.”TypeLoadException: Could not load type 'Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin' from assembly 'Quartz'.

 

7.在编译输出目录(binDebugnet6.0)下新建一个quartz_jobs.xml,内容如下:

 

<?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>
    <!--定义示例任务1 Job-->
    <job>
      <name>ItemJob</name>
      <group>ItemJobGroup</group>
      <description>任务</description>
      <!--job-type,完整类名,命名空间,用逗号隔开-->
      <job-type>ConsoleQuartz.HelloQuartzJob,ConsoleQuartz</job-type>
      <durable>true</durable>
      <recover>false</recover>
    </job>
    <!--定义示例任务1 触发器 每3秒执行一次 ItemJob 任务-->
    <trigger>
      <cron>
        <name>ItemJobTrigger</name>
        <group>DItemJobTriggerGroup</group>
        <!--指定JOB名-->
        <job-name>ItemJob</job-name>
        <!--指定JOB组-->
        <job-group>ItemJobGroup</job-group>
        <cron-expression>0/3 * * * * ?</cron-expression>
      </cron>
    </trigger>
    
    <!--定义示例任务2 Job-->
    <job>
      <name>ItemJob2</name>
      <group>ItemJobGroup2</group>
      <description>任务2</description>
      <!--job-type,完整类名,命名空间,用逗号隔开-->
      <job-type>ConsoleQuartz.HelloQuartzJob2,ConsoleQuartz</job-type>
      <durable>true</durable>
      <recover>false</recover>
    </job>
    <!--定义示例任务2 触发器 每4秒执行一次 ItemJob2 任务-->
    <trigger>
      <cron>
        <name>ItemJobTrigger2</name>
        <group>DItemJobTriggerGroup2</group>
        <job-name>ItemJob2</job-name>
        <job-group>ItemJobGroup2</job-group>
        <cron-expression>0/4 * * * * ?</cron-expression>
      </cron>
    </trigger>
    
  </schedule>
</job-scheduling-data>

 

 

8.按F5启动程序:

Hello, World!任务调度器已启动Hello HelloQuartzJob2Hello Quartz.NetHello HelloQuartzJob2Hello Quartz.Net

 

脚本宝典总结

以上是脚本宝典为你收集整理的.NET6控制台程序使用quartz.net全部内容,希望文章能够帮你解决.NET6控制台程序使用quartz.net所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: