Quartz.NET 的使用
先貼使用代碼:
1 using Quartz;
2 using Quartz.Impl;
3 using Quartz.Logging;
4 using System;
5 using System.Collections.Specialized;
6 using System.Threading.Tasks;
7
8 namespace QuartzTest
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 GetTask().GetAwaiter().GetResult();
15 }
16 public static async Task GetTask()
17 {
18 // construct a scheduler factory
19 NameValueCollection props = new NameValueCollection
20 {
21 { "quartz.serializer.type", "binary" }
22 };
23 ISchedulerFactory factory = new StdSchedulerFactory(props);
24 IScheduler scheduler =await factory.GetScheduler();
25
26 IJobDetail job = JobBuilder.Create<HelloJob>()
27 .WithIdentity("job1", "group1")
28 .Build();
29
30 ITrigger trigger = TriggerBuilder.Create()
31 .WithIdentity("trigger1", "group1")
32 .WithCronSchedule("0/5 * * * * ?")
33 .Build();
34
35 await scheduler.ScheduleJob(job, trigger);
36 await scheduler.Start();
37
38 // some sleep to show what's happening
39 await Task.Delay(TimeSpan.FromSeconds(60));
40
41 // and last shut down the scheduler when you are ready to close your program
42 await scheduler.Shutdown();
43 }
44 }
45
46 public class HelloJob : IJob
47 {
48 public async Task Execute(IJobExecutionContext context)
49 {
50 await Console.Out.WriteLineAsync("Hello Quartz.Net..." + DateTime.Now + Environment.NewLine);
51 }
52 }
53
54
55
56 //class Program
57 //{
58 // static void Main(string[] args)
59 // {
60 // GetTask().GetAwaiter().GetResult();
61 // }
62
63 // public static async Task GetTask()
64 // {
65 // // construct a scheduler factory
66 // NameValueCollection props = new NameValueCollection
67 // {
68 // { "quartz.serializer.type", "binary" }
69 // };
70 // StdSchedulerFactory factory = new StdSchedulerFactory(props);
71
72 // // get a scheduler
73 // IScheduler scheduler =await factory.GetScheduler();
74 // await scheduler.Start();
75
76 // // define the job and tie it to our HelloJob class
77 // IJobDetail job = JobBuilder.Create<HelloJob>()
78 // .WithIdentity("myJob", "group1")
79 // .Build();
80
81 // // Trigger the job to run now, and then every 40 seconds
82 // ITrigger trigger = TriggerBuilder.Create()
83 // .WithIdentity("myTrigger", "group1")
84 // .StartNow()
85 // .WithSimpleSchedule(x => x
86 // .WithIntervalInSeconds(10)
87 // .RepeatForever())
88 // .Build();
89
90 // // Tell Quartz.Net to schedule the job using our trigger
91 // await scheduler.ScheduleJob(job, trigger);
92
93 // // some sleep to show what's happening
94 // await Task.Delay(TimeSpan.FromSeconds(60));
95
96 // // and last shut down the scheduler when you are ready to close your program
97 // await scheduler.Shutdown();
98 // }
99 //}
100
101 //public class HelloJob : IJob
102 //{
103 // public async Task Execute(IJobExecutionContext context)
104 // {
105 // await Console.Out.WriteLineAsync("Hello Quartz.Net..." + DateTime.Now + Environment.NewLine);
106 // }
107 //}
108
109
110
111 // // Other Method
112 //class Program
113 //{
114 // static void Main(string[] args)
115 // {
116 // LogProvider.SetCurrentLogProvider(new ConsoleLogProvider());
117
118 // RunProgram().GetAwaiter().GetResult();
119
120 // Console.WriteLine("Press any key to close the application");
121 // Console.ReadKey();
122 // }
123
124 // private static async Task RunProgram()
125 // {
126 // try
127 // {
128 // NameValueCollection props = new NameValueCollection
129 // {
130 // {"quartz.serializer.type", "binary" }
131 // };
132 // StdSchedulerFactory factory = new StdSchedulerFactory(props);
133 // IScheduler scheduler = await factory.GetScheduler();
134
135 // await scheduler.Start();
136
137 // IJobDetail job = JobBuilder.Create<HelloJob>()
138 // .WithIdentity("job1", "group1")
139 // .Build();
140
141 // ITrigger trigger = TriggerBuilder.Create()
142 // .WithIdentity("trigger1", "group1")
143 // .StartNow()
144 // .WithSimpleSchedule(x => x
145 // .WithIntervalInSeconds(10)
146 // .RepeatForever())
147 // .Build();
148
149 // await scheduler.ScheduleJob(job, trigger);
150
151 // await Task.Delay(TimeSpan.FromSeconds(60));
152
153 // await scheduler.Shutdown();
154 // }
155 // catch (SchedulerException se)
156 // {
157 // await Console.Error.WriteLineAsync(se.ToString());
158 // }
159 // }
160
161 // private class ConsoleLogProvider : ILogProvider
162 // {
163 // public Logger GetLogger(string name)
164 // {
165 // return (level, func, exception, parameters) =>
166 // {
167 // if (level >= LogLevel.Info && func != null)
168 // {
169 // Console.WriteLine("[" + DateTime.Now.ToLongTimeString() + "] [" + level + "] " + func(), parameters);
170 // }
171 // return true;
172 // };
173 // }
174
175 // public IDisposable OpenNestedContext(string message)
176 // {
177 // throw new NotImplementedException();
178 // }
179
180 // public IDisposable OpenMappedContext(string key, string value)
181 // {
182 // throw new NotImplementedException();
183 // }
184 // }
185 //}
186
187 //public class HelloJob : IJob
188 //{
189 // public async Task Execute(IJobExecutionContext context)
190 // {
191 // await Console.Out.WriteLineAsync("Greetings from HelloJob!");
192 // }
193 //}
194 }
參考網址:
https://www.cnblogs.com/huyong/p/11091089.html
https://www.quartz-scheduler.net/documentation/quartz-3.x/quick-start.html
https://www.liujiajia.me/2019/02/13/quartz-net/
Quartz.NET 的使用的更多相关文章
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...
- Quartz
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中.它提供了巨大的灵 活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度. eg: ja ...
- Spring Quartz实现任务调度
任务调度 在企业级应用中,经常会制定一些"计划任务",即在某个时间点做某件事情 核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作 任务调度涉及多线程并发.线程池维 ...
- topshelf和quartz内部分享
阅读目录: 介绍 基础用法 调试及安装 可选配置 多实例支持及相关资料 quartz.net 上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客. 介绍 topshelf是创建windows ...
- Quartz.net持久化与集群部署开发详解
序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我的罪过. 但是quart.net是经过许多大项 ...
- Quartz.net开源作业调度框架使用详解
前言 quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本.支持 cron-like表达式,集群,数据库.功能性能强大更不 ...
- quartz.net 时间表达式----- Cron表达式详解
序言 Cron表达式:就是用简单的xxoo符号按照一定的规则,就能把各种时间维度表达的淋漓尽致,无所不在其中,然后在用来做任务调度(定时服务)的quart.net中所认知执行,可想而知这是多么的天衣无 ...
- Quartz.NET Windows 服务示例
想必大家在项目中处理简单的后台持续任务或者定时触发任务的时候均使用 Thread 或者 Task 来完成,但是项目中的这种需求一旦多了的话就得将任务调度引入进来了,那今天就简单的介绍一下 Quartz ...
- [Quartz笔记]玩转定时调度
简介 Quartz是什么? Quartz是一个特性丰富的.开源的作业调度框架.它可以集成到任何Java应用. 使用它,你可以非常轻松的实现定时任务的调度执行. Quartz的应用场景 场景1:提醒和告 ...
- 关于Quartz.NET作业调度框架的一点小小的封装,实现伪AOP写LOG功能
Quartz.NET是一个非常强大的作业调度框架,适用于各种定时执行的业务处理等,类似于WINDOWS自带的任务计划程序,其中运用Cron表达式来实现各种定时触发条件是我认为最为惊喜的地方. Quar ...
随机推荐
- 5分钟了解LangChain的路由链
上上篇文章<5分钟理透LangChain的Chain>里用到了顺序链SequentialChain,它可以将多个链按顺序串起来.本文介绍LangChain里的另外1个重要的链:路由链. 1 ...
- kong网关部署
软件版本: Postgresql:9.6 (不使用最新版,是因为 konga 不支持) Kong:3.4.2 konga:0.14.7 (UI管理界面) ### Postgresql部署 ## doc ...
- C# Linq.FirstOrDefault、Linq.Where、Linq.AsParallel、List.Exists、List.Find、Dictionar.TryGetValue、HashSet.Contains 性能的比较
今天我们来比较一下集合检索方法性能更优问题,测试代码 public class Entity { public int Id { get; set; } public int No { get; se ...
- 在Linux驱动中使用regmap
背景 在学习SPI的时候,看到了某个rtc驱动中用到了regmap,在学习了对应的原理以后,也记录一下如何使用. 介绍 在Linu 3.1开始,Linux引入了regmap来统一管理内核的I2C, S ...
- 一次STM32进入HardFault_Handler 的解决情况
STM32进入HardFault_Handler调试 --- title: STM32进入HardFault_Handler调试 date: 2020-06-18 10:26:48 categorie ...
- React Lazy 和 Suspense
在React应用中,有些组件可能不经常用到,比如法律条款的弹窗,我们几乎不看,这些组件也就没有必要首次加载,可以在点击它们的时候再加载,这就需要动态引入组件,需要组件的时候,才引入组件,加载它们,进行 ...
- Docker使用Dockerfile部署项目
什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指令自动生成镜像. 如何通过do ...
- Spring(XML方式)简单入门
环境准备 maven jdk Spring Eclipse 项目创建 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0 ...
- 说说RabbitMQ延迟队列实现原理?
使用 RabbitMQ 和 RocketMQ 的人是幸运的,因为这两个 MQ 自身提供了延迟队列的实现,不像用 Kafka 的同学那么苦逼,还要自己实现延迟队列.当然,这都是题外话,今天咱们重点来聊聊 ...
- Java 线程池之Jetty 线程池学习总结
Java 线程池之Jetty 线程池学习总结 前提 Jetty 11.0.x 为什么是Jetty? Java提供4中创建线程池的快捷方式 Executors.newFixedThreadPool(); ...