作者:多米音乐_34492579 | 来源:互联网 | 2023-08-10 07:49
最近做WebAPI定时任务,网上搜了好多,发现对于小白来说并不太友好,Quartz.Net2.X和3.X变化太大整理一下自己做的一些体验 基于Quartz.Net2.X 1.
最近做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
{
///
/// 定时任务
///
public class JobScheduler
{
///
/// 分钟
///
public static int Minute = Convert.ToInt32(ConfigurationManager.AppSettings["Minute"]);
///
/// 开始任务
///
///
public static void Start()
{
// 创建作业调度器
ISchedulerFactory factory = new StdSchedulerFactory();
IScheduler scheduler = factory.GetScheduler();
// 创建作业
IJobDetail job = JobBuilder.Create()
.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.发送代码
///
/// 发送短信
///
public class SendSMSJob : IJob
{
///
/// 失败次数
///
public static int ErrorCount = Convert.ToInt32(ConfigurationManager.AppSettings["ErrorCount"]);
public static int IsExecute = Convert.ToInt32(ConfigurationManager.AppSettings["IsExecute"]);
string COnnectionString= ConfigurationManager.ConnectionStrings["K2SlnConnectionString"].ConnectionString;
///
/// 执行方法
///
///
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();
}
}
}