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

    Quartz用于定时任务。当我们想周期性的执行某一个任务的时候,使用Quartz就会比较便捷

    首先需要引用Quartz

    首先声明任务管理类。里面包含了时间轴,作业(做什么任务)以及实践策略(周期次数等)

    public async static Task Init()
            {
                #region  创建单元(时间轴)
                StdSchedulerFactory factory = new StdSchedulerFactory();
                IScheduler scheduler=await factory.GetScheduler();
                await scheduler.Start();
                #endregion
    
                #region 生成作业描述(做什么)
                IJobDetail job=JobBuilder.Create<SendMessageJob>()
                    .WithIdentity("sendMessageJob", "group1")   //分组
                    .WithDescription("this is message job")      //作业描述
                    .Build();
                #endregion
    
                #region 实践策略(重复间隔、次数)
                ITrigger trigger=TriggerBuilder.Create()
                    .WithIdentity("sendMessageJob", "group1")  //分组
                    // .StartNow()   //马上执行一次
                    .WithSimpleSchedule(w => w.WithIntervalInSeconds(5).WithRepeatCount(3))   //每5秒重复一次。最多重复4次。想要一直执行的话,使用RepeatForever()
                    .Build();
                #endregion 
    
                //将时间策略和作业承载到单元上
                await scheduler.ScheduleJob(job, trigger);
            }

    其中SendMessageJob是我们自定义的任务,也就是我们周期性执行的行为。它需要继承于IJob接口

    public class SendMessageJob : IJob
        {
            /// <summary>
            /// 当前Task内部需要执行的任务
            /// </summary>
            /// <param name="context"></param>
            /// <returns></returns>
            public async Task Execute(IJobExecutionContext context)
            {
                await Task.Run(() =>
                {
                    Console.WriteLine("*******************************");
                    Console.WriteLine($"起床了!{DateTime.Now}");
                    Console.WriteLine("*******************************");
                    Console.WriteLine();
                });
            }
        }

    最后进行任务调用

    DispatchingManager.Init().GetAwaiter().GetResult();
    记录编程的点滴,体会学习的乐趣
  • 相关阅读:
    1837. Isenbaev's Number(floyd)
    1414. Astronomical Database(STL)
    1067. Disk Tree(字符串)
    1682. Crazy Professor(并查集)
    1650. Billionaires(线段树)
    1316. Electronic Auction(树状数组)
    1701. Ostap and Partners(并查集-关系)
    大数字运算——2、BigDecimal
    大数字运算——1、BigInteger
    java中的访问修饰符2
  • 原文地址:https://www.cnblogs.com/AduBlog/p/14783229.html
Copyright © 2011-2022 走看看