zoukankan      html  css  js  c++  java
  • 在ASP.NET CORE Web API 中使用Quartz.Net 执行定时任务

    1、介绍:Quartz.Net主要是用来做一些周期性的工作,或者定时工作。比如每天凌晨2点执行某个方法或者调用某个接口。

    2、在NuGet 包管理器中安装,搜索Quartz 安装

    3、需要使用定时任务的类实现IJob接口(任务类),比如我要定时执行发送邮件   代码如下:

    public class WorkAbnormalAppService : IJob
        {
            /// <summary>
            /// 实现定时接口
            /// </summary>
            /// <param name="context"></param>
            /// <returns></returns>
            public async Task Execute(IJobExecutionContext context)
            {
    //你需要定时执行的任务 SendEmail email
    = new SendEmail(); string[] emailList = new string[] { "1586693437@qq.com"}; foreach (var item in emailList) { email.Send_Email("定时邮件提醒", "BUG处理", item); } } }

    4、创建一个任务调度的类 (任务调度类)

    IJobDetail job_Work = JobBuilder.Create<WorkAbnormalAppService>() 中的 WorkAbnormalAppService填你的任务类名
    namespace WAP.WorkAbnormals
    {
        public class JobSchedulerWork
        {
            public static async void Work()
            {
                //调度器工厂
                ISchedulerFactory Work = new StdSchedulerFactory();
                //调度器
                IScheduler schedulers_work = await Work.GetScheduler();
                await schedulers_work.GetJobGroupNames();
                /*-------------计划任务代码实现------------------*/
                //创建任务
                IJobDetail job_Work = JobBuilder.Create<WorkAbnormalAppService>() 
                    .WithIdentity("TimeTriggerddd", "TimeGroupdd")
                    .Build();
                //创建触发器 2点一分时被执行
                 ITrigger trigger9 = TriggerBuilder.Create().WithCronSchedule("0 01 02 * * ?").WithIdentity("TimeTriggerddd", "TimeGroupdd").Build();
                //每隔多久执行一次  这个是每隔多久执行一遍
                //ITrigger trigger9 = TriggerBuilder.Create().WithIdentity("TimeTriggerddd", "TimeGroupdd").WithSimpleSchedule(t => t.WithIntervalInSeconds(1200).RepeatForever()).Build();
                //添加任务及触发器至调度器中
                await schedulers_work.ScheduleJob(job_Work, trigger9);
                /*-------------计划任务代码实现------------------*/
                //启动
                await schedulers_work.Start();
            }
    
    
        }
    }

    5、然后到 Startup.cs 类中设置一下;(我这用的是asp.net core web api)

         public IServiceProvider ConfigureServices(IServiceCollection services)
            {
             // 定时执行考勤异常方法
              JobSchedulerWork.Work();
            }

    6 、考虑到IIS服务器的回收机制,需要设置一下IIS回收

     在IIS中找到这个站点所用的程序池,点击“高级设置...” 在打开的列表中更改以下设置:
     回收——固定时间间隔(分钟) 改为 0         
            ——虚拟/专用内存限制(KB) 改为 0 
      进程模型——闲置超时(分钟) 改为 0
      这样子,一般情况下程序池就不会被自动回收了,后台一些简单的计算线程就会正常工作

     

  • 相关阅读:
    [Nowcoder] 六一儿童节(拼多多)
    [Nowcoder] 大整数相乘(拼多多笔试题)
    [Nowcoder] 最大乘积(拼多多笔试题)
    [Paddle学习笔记][06][图像分类-动态图]
    [Paddle学习笔记][05][对抗生成网络]
    [Paddle学习笔记][04][图像分类]
    [Paddle学习笔记][03][数字识别]
    [Paddle学习笔记][02][MNIST转换到PNG]
    [Paddle学习笔记][01][线性回归]
    [caffe学习笔记][06][使用LeNet分类输入图片]
  • 原文地址:https://www.cnblogs.com/LinWenQiang/p/13460283.html
Copyright © 2011-2022 走看看