zoukankan      html  css  js  c++  java
  • Quartz基础使用

    Quartz基本组成部分:

    • 调度器:Scheduler
    • 任务:JobDetail
    • 触发器:Trigger,包括SimpleTrigger和CronTrigger

    .

    using Quartz;
    using Quartz.Impl;
    using System;           
    using System.Threading.Tasks;
    
    namespace QuartzDemo1
    {
        /// <summary>
        /// 我的任务
        /// </summary>
        class MyJob : IJob
        {
            public Task Execute(IJobExecutionContext context)
            {
                JobDataMap jobdata = context.JobDetail.JobDataMap;
                JobDataMap triggerdata= context.Trigger.JobDataMap;
                Console.WriteLine($"JobKey:{jobdata["JobKey"]},TriggerKey:{triggerdata["TriggerKey"]},{DateTime.Now.ToString()}");
                return Task.CompletedTask;
            }
        }
        class Program
        {
            static async Task Main(string[] args)
            {
                IScheduler scheduler;/*****************this's Scheduler********************/
                {
                    //调度器工厂        
                    StdSchedulerFactory factory = new StdSchedulerFactory();
                    scheduler = await factory.GetScheduler();  //调度器  
                }
                IJobDetail job;  /*****************this's Ijob********************/
                {   
                    //创建一个工作任务 ,myjob1是名称,mygroup1是组名。
                     job = JobBuilder.Create<MyJob>().WithIdentity("myjob1", "mygroup1")
                                                   .UsingJobData("JobKey", "JobValue")     //传数据
                                                    .Build();
                    //..... 可以创建多个Job然后通过  group进行分组
                    //例如:   有7个接口 A/B/C/O/X/Y/Z
                    //ABC分别接收ABC类型订单(已确定执行时间一致)  每天06:00执行
                    //XYZ分别发送XYZ订单(已确定执行时间一致)     每天12:00/22:00点
                    //O接口定时清理数据                        每天23:00执行
                    //则可以把 ABC分为  ABCGroup     XYZ分为XYZGroup   O单独分为Ogroup;
                }
                ITrigger trigger;  /*****************this's Itrigger********************/
                {
                    //触发器
                    trigger = TriggerBuilder.Create()
                               .WithIdentity("mytrigger1", "mygroup1") //定时器与JobGroup对应
                             //.WithCronSchedule("0/5 * * * * ?") //5秒执行一次     //同下 (定时)
                               .WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever())  //同上(定时)
                               .UsingJobData("TriggerKey", "TriggerValue")    //传数据
                               .Build();
                }
                //将任务与触发器添加到调度器中
                _ = scheduler.ScheduleJob(job, trigger);
                _ = scheduler.Start();
                Console.Read();   
            }
        }
    }
  • 相关阅读:
    实验四 代码审查
    结对编程——阶段二
    实验二—结对编程第一环节
    实验一 GIT 代码版本管理
    实验五 单元测试
    实验四 代码评审
    实验三 UML建模工具的安装与使用
    实验二 结对编程第二阶段
    实验二 结对编程——第一阶段
    软件工程 实验一 GIT代码版本管理
  • 原文地址:https://www.cnblogs.com/Zingu/p/14542734.html
Copyright © 2011-2022 走看看