WebAPI中的定时任务详解-使用Quartz.Net

  最近做WebAPI定时任务,网上搜了好多,发现对于小白来说并不太友好,Quartz.Net 2.X和3.X变化太大

整理一下自己做的一些体验   基于Quartz.Net 2.X 

1.定时脚本

using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Threading.Tasks;
using System.Web;

namespace WF.BPM.WebAPI.Job
{
    /// <summary>
    /// 定时任务
    /// </summary>
    public class JobScheduler
    {
        /// <summary>
        /// 分钟
        /// </summary>
        public static int Minute = Convert.ToInt32(ConfigurationManager.AppSettings["Minute"]);
        /// <summary>
        /// 开始任务
        /// </summary>
        /// <returns></returns>
        public static void Start()
        {
            // 创建作业调度器
            ISchedulerFactory factory = new StdSchedulerFactory();
            IScheduler scheduler = factory.GetScheduler();
            // 创建作业
            IJobDetail job = JobBuilder.Create<SendSMSJob>()
                .WithIdentity("SendSMSJob", "SendSMSJobGroup")
                .Build();

            // 创建触发器,每3min执行一次
            ITrigger trigger = TriggerBuilder.Create()
               .WithIdentity("SendSMSTrigger", "SendSMSGroup")
               .StartNow()
               .WithSimpleSchedule(x => x
                   .WithIntervalInMinutes(Minute)
                   .RepeatForever())
               .Build();

            // 加入到作业调度器中
            scheduler.ScheduleJob(job, trigger);
            scheduler.Start();
        }
    }
}

2.发送代码

    /// <summary>
    /// 发送短信
    /// </summary>
    public class SendSMSJob : IJob
    {


        /// <summary>
        /// 失败次数
        /// </summary>
        public static int ErrorCount = Convert.ToInt32(ConfigurationManager.AppSettings["ErrorCount"]);
        public static int IsExecute = Convert.ToInt32(ConfigurationManager.AppSettings["IsExecute"]);
        string ConnectionString = ConfigurationManager.ConnectionStrings["K2SlnConnectionString"].ConnectionString;

        /// <summary>
        /// 执行方法
        /// </summary>
        /// <param name="context"></param>
        public void Execute(IJobExecutionContext context)
        {
            if (IsExecute == 1)
            {
               SendSMSBLL.MainSend();
            }
        }
    }

3.加入到Global.asax

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using WF.BPM.WebAPI.Job;

namespace WF.BPM.WebAPI
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //注册定时任务
            JobScheduler.Start();
        }
    }
}

 

WebAPI中的定时任务详解-使用Quartz.Net

上一篇:Asp.Net Core Web Api基于cookie的安全验证


下一篇:WPF4 事件处理器与代码后置