Quartz.net2.2初体验

简介: 简介:Quartz.net是一个开源的作用调度框架,非常强大,能够通过简单的配置帮助我们定时具体的操作。相对于我们用的线程里面while(true)然后sleep来执行某个操作,应该算的上是高端,大气,上档次了。

简介:Quartz.net是一个开源的作用调度框架,非常强大,能够通过简单的配置帮助我们定时具体的操作。相对于我们用的线程里面while(true)然后sleep来执行某个操作,应该算的上是高端,大气,上档次了。目前最新版本是2.2,新的版本里面有些方法名发生了变化,从之前的版本用过来的人应该会有体会.这里我使用最常用,也是最稳定的方式--Windows服务里面使用Quartz.net,并且使用配置的方式来设置触发器。

步骤:

1.定义使用的job:就是我们具体要执行的操作.

namespace Quartz.MyJobs
{
    public class HelloWorldJob : IJob
    {
        #region IJob 成员

        public void Execute(IJobExecutionContext context)
        {
            //LogHelper.LogHelper.Log("执行HelloWorld Job");
            String path = AppDomain.CurrentDomain.BaseDirectory + "Job\\";
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            File.AppendAllText(path + "job.txt", DateTime.Now + "\n");
        }

        #endregion
    }
}

有了job,之后就在配置里面以Cron表达式的方式来设置Trigger和job配置节(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>

    <job>
        <name>HelloWorldJob</name>
        <group>sampleGroup</group>
        <description>Sample job for Quartz Server</description>
        <job-type>Quartz.MyJobs.HelloWorldJob, Quartz.MyJobs</job-type>
        <durable>true</durable>
        <recover>false</recover>
    </job>

    <trigger>
      <cron>
        <name>sampleSimpleTrigger</name>
        <group>sampleSimpleGroup</group>
        <description>Simple trigger to simply fire sample job</description>
        <job-name>HelloWorldJob</job-name>
        <job-group>sampleGroup</job-group>
        <cron-expression>0/3 * * * * ?</cron-expression> <!--每3秒中执行一次-->
      </cron>
    </trigger>
  </schedule>
</job-scheduling-data>

还有有一个quartz.config配置文件,里面有这样一行:quartz.plugin.xml.fileNames = ~/quartz_jobs.xml(这里的文件对应我们上面配置文件夹)。

现在job和trigger已经定义好了,接下来我们在Windows服务里面声明一个调度器把两者结合起来就OK了。

namespace Quartz.WinService
{
    partial class MyQuartzService : ServiceBase
    {
        IScheduler sched = null;
        public MyQuartzService()
        {
            InitializeComponent();
            ISchedulerFactory factory = new StdSchedulerFactory();
            sched = factory.GetScheduler();
        }

        protected override void OnStart(string[] args)
        {
            sched.Start();
            LogHelper.LogHelper.Log("服务启动...");
        }

        protected override void OnStop()
        {
            sched.Shutdown();
            LogHelper.LogHelper.Log("服务停止");
        }
    }
}

到这里就结束了。如果你的项目里面需要定时执行某个操作,使用Quartz.net绝对是非常棒的选择。

关于Cron表达式的了解可以点击这里

目录
打赏
0
0
0
0
8
分享
相关文章
接口的幂等性设计和防重保证,详细分析幂等性的几种实现方法
本篇文章详细说明了幂等性,解释了什么是幂等性,幂等性的使用场景,讨论了幂等和防重的概念。分析了幂等性的情况以及如何设计幂等性服务。阐述了幂等性实现防重的几种策略,包括乐关锁,防重表,分布式锁,token令牌以及支付缓冲区。
7778 0
接口的幂等性设计和防重保证,详细分析幂等性的几种实现方法
Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
本文介绍了阿里云实时数仓Hologres负责人姜伟华在Flink Forward Asia 2024上的分享,涵盖实时数仓的发展历程、从实时数仓到实时湖仓的演进,以及总结。文章通过三代实时数仓架构的演变,详细解析了Lambda架构、Kafka实时数仓分层+OLAP、Hologres实时数仓分层复用等方案,并探讨了未来从实时数仓到实时湖仓的演进方向。最后,结合实际案例和Demo展示了Hologres + Flink + Paimon在实时湖仓中的应用,帮助用户根据业务需求选择合适的方案。
918 20
Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
|
10月前
|
Python变量用法——单下划线变量名_ 原创
Python变量用法——单下划线变量名_ 原创
113 0
【Azure Redis】Redis客户端出现15分钟的超时异常
【Azure Redis】Redis客户端出现15分钟的超时异常
108 0
蓝桥青少年组——计算24 2020-11-25
蓝桥青少年组——计算24 2020-11-25
115 0
可视化接口管理平台 YApi,让你轻松搞定 API 的管理问题
高效、易用、功能强大的可视化接口管理平台 YApi,让我们能轻松帮助我们搞定 API 的管理问题。
931 1
web前端学习(三十二)——JavaScript语法、语句输出及注释的相关设置
web前端学习(三十二)——JavaScript语法、语句输出及注释的相关设置
web前端学习(三十二)——JavaScript语法、语句输出及注释的相关设置
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问