.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.在编译输出目录(bin\Debug\net6.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.在编译输出目录(bin\Debug\net6.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 HelloQuartzJob2
Hello Quartz.Net
Hello HelloQuartzJob2
Hello Quartz.Net
.NET6控制台程序使用quartz.net的更多相关文章
- Quartz+log4net实现控制台程序定时运行,并且记录日志
c# 控制台程序定时运行,并记录日志. 组件Quartz + log4net Quartz定时运行程序,log4net记录日志. 首先建立控制台程序"QuartzTest" 安装Q ...
- 大比速:remoting、WCF(http)、WCF(tcp)、WCF(RESTful)、asp.net core(RESTful) .net core 控制台程序使用依赖注入(Autofac)
大比速:remoting.WCF(http).WCF(tcp).WCF(RESTful).asp.net core(RESTful) 近来在考虑一个服务选型,dotnet提供了众多的远程服务形式.在只 ...
- 【C#基础知识】C#控制台程序入口函数 Main(string[] args) 参数详解
测试环境vs2019+.net5.0 请看 :https://cloud.tencent.com/developer/article/1507934 本测试环境vs2022+.net6.0 +wind ...
- 在.NET Core控制台程序中使用依赖注入
之前都是在ASP.NET Core中使用依赖注入(Dependency Injection),昨天遇到一个场景需要在.NET Core控制台程序中使用依赖注入,由于对.NET Core中的依赖注入机制 ...
- 使用 CommandLineApplication 类创建专业的控制台程序
闲话 在很久很久以前,电脑是命令行/终端/控制台的天下,那屏幕上的光标在行云流水般的键盘敲击下欢快地飞跃着,那一行行的字符输出唰唰唰地滚动着--直到 Windows 95 的出现(那时候我还不知道苹果 ...
- C#基础-关于用json给控制台程序传值的坑
上周遇到了一个非常诡异的坑,首先写了两个程序,第一个程序输出成dll,第二个程序是控制台程序. 在第一个程序里,我使用了process去启动第二个程序,同时传入了一个Json作为参数,即: Proce ...
- 你们信不信一句Console.WriteLine就能让你的控制台程序失去响应
好久没更新博客了,今天是扒衣见君节,难得闲下来就来说说一个最近有趣的发现吧. 首先废话不多说,直接上代码吧 class Program { static void Main(string[] args ...
- 【转】WIN32 控制台程序
http://blog.csdn.net/houmin0036/article/details/7702236 win32控制台项目指在32位Windows命令提示符(即所谓的dos)环境下运行的应用 ...
- Async Console Programs 异步控制台程序
如果你正在写一个控制台程序,你可能最终想要一个异步的main方法,像这样: class Program { static async void Main(string[] args) { ... } ...
随机推荐
- 短短 29 天,应对高峰 100W+ 访问,看浙大如何交出满分答卷
疫情期间"停课不停教,停课不停学",线上开课第一天,浙江大学网上开课平台访问量即突破100 万次,访客数3万余人,最高峰达 1.1万人同时在线,发起课程直播2000余场,然而系统却 ...
- 基于Apache Zookeeper手写实现动态配置中心(纯代码实践)
相信大家都知道,每个项目中会有一些配置信息放在一个独立的properties文件中,比如application.properties.这个文件中会放一些常量的配置,比如数据库连接信息.线程池大小.限流 ...
- MySQL:提高笔记-3
MySQL:提高笔记-3 学完基础的语法后,进一步对 MySQL 进行学习,前几篇为: MySQL:提高笔记-1 MySQL:提高笔记-2 MySQL:提高笔记-3,本文 说明:这是根据 bilibi ...
- UltraSoft - Beta - 发布声明
1. Beta版本更新内容 新功能 (1)消息中心页面 课程爬取到新DDL.资源时会以通知的方式通知用户,本次同步更新了哪些内容一目了然.此外,当被作为参与成员添加DDL时也会通知.一些系统通知也会放 ...
- UltraSoft - Beta - Scrum Meeting 6
Date: May 22n'd, 2020. Scrum 情况汇报 进度情况 组员 负责 今日进度 q2l PM.后端 修复了DDL日程自动发邮件被服务器"吞掉"的bug后端增加了 ...
- (转载)关于Linux C函数strtok的使用要点
今天遇到了处理字符串的问题,比如分割问题,但是一时间想不起来什么方法,也不想手写一个类似java String中的split函数,于是百度了一下,发现了strtok这个好用的方法,以此作为总结. st ...
- 51nod_1001 数组中和等于K的数对(二分)
题意: 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9 ...
- JAVA笔记10__Math类、Random类、Arrays类/日期操作类/对象比较器/对象的克隆/二叉树
/** * Math类.Random类.Arrays类:具体查JAVA手册...... */ public class Main { public static void main(String[] ...
- Spark记录(二):Spark程序的生命周期
本文以Spark执行模式中最常见的集群模式为例,详细的描述一下Spark程序的生命周期(YARN作为集群管理器). 1.集群节点初始化 集群刚初始化的时候,或者之前的Spark任务完成之后,此时集群中 ...
- PTA 列车调度 (25分)
PTA 列车调度 (25分) [程序实现] #include<bits/stdc++.h> using namespace std; int main(){ int num,n; cin& ...