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 svn工具进行svn 到git仓库的同步[持续更新]
    解决Linux无法存储svn密码
    spring boot @ResponseBody 注解情况下返回自定义类报错406
    解决mysql密码正确的情况下而无法连接的问题
    react项目实现国际化i18n
    github clone加速
    Centos模板机配置
    Xshell终端连接服务器慢,问题解决方法
    佛祖保佑永无 BUG 代码注释
    本地代理web端口
  • 原文地址:https://www.cnblogs.com/Zingu/p/14542734.html
Copyright © 2011-2022 走看看