• quartz.net使用(通过配置文件进行配置)


    在项目Nuget包管理器中搜索:quartz,安装完成之后再项目中引用即可

    先定义一个Job,需要实现IJob接口:

    public class TestJob : IJob
        {
            public void Execute(IJobExecutionContext context)
            {
                log4net.ILog log = log4net.LogManager.GetLogger(typeof(TestJob));
                if (log.IsInfoEnabled)
                {
                    log.Info("记录当前时间" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+"
    ");
                }
                Console.WriteLine("执行调度任务test"+" --- "+ DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            }
        }

    配置quartz_jobs.xml(附Cron生成器链接)

    <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>
          <!--任务名称,同一个group中多个job的name不能相同-->
          <name>SimpleJob</name>
          <!--任务分组-->
          <group>sampleGroup</group>
          <!--任务描述-->
          <description>Sample job for Quartz Server</description>
          <!--完整命名空间的类名及所属程序集名称-->
          <job-type>WindowsService.Job.SimpleJob, WindowsService</job-type>
          <durable>true</durable>
          <recover>false</recover>
        </job>
        <!--任务触发器-->
        <trigger>
          <!--简单任务的触发器,可以调度用于重复执行的任务-->
          <!--<simple>
            --><!--触发器名称,同一个分组中的名称必须不同--><!--
            <name>sampleSimpleTrigger</name>
            --><!--触发器组--><!--
            <group>sampleGroup</group>
            --><!--描述--><!--
            <description>Simple trigger to simply fire sample job</description>
            --><!--要调度的任务名称,该job-name必须和对应job节点中的name完全相同--><!--
            <job-name>SimpleJob</job-name>
            --><!--调度任务(job)所属分组,该值必须和job中的group完全相同--><!--
            <job-group>sampleGroup</job-group>
            --><!--任务开始时间--><!--
            --><!--<start-time>2017-08-21T11:10:00+08:00</start-time>--><!--
            <misfire-instruction>SmartPolicy</misfire-instruction>
            --><!--任务执行次数  -1 为无限次执行--><!--
            <repeat-count>-1</repeat-count>
            --><!--任务触发间隔(毫秒)--><!--
            <repeat-interval>1000</repeat-interval>
            --><!--每3秒中执行一次--><!--
          </simple>-->
          <cron>
            <name>JobTrigger</name>
            <group>JobTriggers</group>
            <description>cron trigger</description>
            <job-name>SimpleJob</job-name>
            <job-group>sampleGroup</job-group>
            <!--<start-time>2015-11-26T22:19:00+08:00</start-time>-->
            <cron-expression>0/2 * * * * ?</cron-expression>
          </cron>
        </trigger>
      </schedule>
    </job-scheduling-data>

    配置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.fileNames = ~/quartz_jobs.xml
    # export this server to remoting context
    quartz.scheduler.exporter.type = Quartz.Simpl.RemotingSchedulerExporter, Quartz
    quartz.scheduler.exporter.port = 555
    quartz.scheduler.exporter.bindName = QuartzScheduler
    quartz.scheduler.exporter.channelType = tcp
    quartz.scheduler.exporter.channelName = httpQuartz

    main函数中进行调用

    static void Main(string[] args)
            {
                StdSchedulerFactory std = new StdSchedulerFactory();
                IScheduler scheduler = std.GetScheduler();
                scheduler.Start();
            }

    运行结果,每隔两秒输出语句

  • 相关阅读:
    Redis on Spark:Task not serializable
    一次Spark应用程序参数优化案例
    Spark性能优化(2)——广播变量、本地缓存目录、RDD操作、数据倾斜
    Spark性能优化(1)——序列化、内存、并行度、数据存储格式、Shuffle
    Java – Convert IP address to Decimal Number
    Java IP地址字符串与BigInteger的转换, 支持IPv6
    Spark性能优化(2)——广播变量、本地缓存目录、RDD操作、数据倾斜
    Android Matrix类以及ColorMatri
    OpenGL中shader使用
    Android应用程序与SurfaceFlinger服务之间的共享UI元数据(SharedClient)的创建过程分析 .
  • 原文地址:https://www.cnblogs.com/z-huan/p/7412181.html
Copyright © 2020-2023  润新知