zoukankan      html  css  js  c++  java
  • Quartz.net2.2初体验

    Quartz.net2.2初体验

    简介: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 + "
    ");
            }
    
            #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表达式的了解可以点击这里

  • 相关阅读:
    leaflet之自定义marker Icon
    Geoserver系列教程
    leaflet教程
    浏览器缓存详解:expires,cache-control,last-modified,etag详细说明
    给自己,这周一个任务,完成一个组件化的图片轮播效果
    撩课-Java每天10道面试题第4天
    撩课-Java每天10道面试题第3天
    撩课-Java每天10道面试题第2天
    撩课-Java每天10道面试题第1天
    撩课-Mysql详解第3部分sql分类
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3403580.html
Copyright © 2011-2022 走看看