zoukankan      html  css  js  c++  java
  • 基于Quartz2.3.3的帮助类 QuartzHelper

    using System;
    using System.Collections.Generic;
    using Quartz;
    using Quartz.Core;
    using Quartz.Impl;
    using Quartz.Impl.Triggers;
    using Kmmp.Core.Models;

    namespace Kmmp.Core.Helper
    {
    /// <summary>
    /// Author:tiny.wu
    /// Date:2016-04-01
    /// Desc:定时任务
    /// </summary>
    public class QuartzHelper
    {
    private static readonly ISchedulerFactory schedulerFactory;

    static QuartzHelper()
    {
    System.Collections.Specialized.NameValueCollection properties = new System.Collections.Specialized.NameValueCollection();
    properties["quartz.threadPool.threadCount"] = AppSettingHelper.GetInt("quartz.threadPool.threadCount", 10).ToString();
    properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool,Quartz";
    properties["quartz.threadPool.threadPriority"] = "Normal";
    schedulerFactory = new StdSchedulerFactory(properties);
    }

    /// <summary>
    /// Author:tiny.wu
    /// Date:2016-04-01
    /// Desc:添加一个job(新的job)
    /// </summary>
    /// <param name="groupName">分组名称</param>
    /// <param name="jobName">job名称</param>
    /// <param name="cls">类名格式:Kemai.MSG.Business.Jobs.PayReverseJob, Kemai.MSG.Business</param>
    /// <param name="time">调度时间</param>
    /// <param name="isDurable"></param>
    /// <param name="requestsRecover"></param>
    /// <param name="parameters">参数</param>
    public static KmmResult<bool> AddJob(string groupName, string jobName, string cls, string time, bool isDurable = true, bool requestsRecover = false, Dictionary<string, object> parameters = null)
    {
    try
    {
    string[] arr = cls.Split(',');
    var type = ObjectFactoryHelper.CreateInstanceType(arr[1].Trim(), arr[0].Trim());
    return AddJob(groupName, jobName, type, time, isDurable, requestsRecover, parameters);
    }
    catch (Exception ex)
    {
    SysLogHelper.Error(ex);
    KmmResult<bool> result = new KmmResult<bool>();
    result.data = false;
    return result.ErrorMsg(ex.Message);
    }
    }

    /// <summary>
    /// Author:renfei
    /// Date:2016-04-13
    /// Desc:添加一个job(新的job)
    /// </summary>
    /// <param name="groupName">分组名称</param>
    /// <param name="jobName">job名称</param>
    /// <param name="cls">类名格式:Kemai.MSG.Business.Jobs.PayReverseJob, Kemai.MSG.Business</param>
    /// <param name="time">调度时间</param>
    /// <param name="jobtype">作业类型</param>
    /// <param name="isDurable"></param>
    /// <param name="requestsRecover"></param>
    public static KmmResult<bool> AddJob(string groupName, string jobName, string cls, string time, string jobtype, bool isDurable = true, bool requestsRecover = false, Dictionary<string, object> parameters = null)
    {
    try
    {
    string[] arr = cls.Split(',');
    var type = ObjectFactoryHelper.CreateInstanceType(arr[1].Trim(), arr[0].Trim());
    return AddJob(groupName, jobName, type, time, isDurable, jobtype, requestsRecover, parameters);

    }
    catch (Exception ex)
    {
    SysLogHelper.Error(ex);
    KmmResult<bool> result = new KmmResult<bool>();
    result.data = false;
    return result.ErrorMsg(ex.Message);
    }
    }

    /// <summary>
    /// Author:tiny.wu
    /// Date:2016-04-01
    /// Desc:增加job
    /// </summary>
    /// <param name="groupName">分组名称</param>
    /// <param name="jobName">job名称</param>
    /// <param name="type">job类</param>
    /// <param name="time">调度时间</param>
    /// <param name="isDurable"></param>
    /// <param name="requestsRecover"></param>
    public static KmmResult<bool> AddJob(string groupName, string jobName, Type type, string time, bool isDurable, string jobtype, bool requestsRecover, Dictionary<string, object> parameters = null)
    {
    KmmResult<bool> result = new KmmResult<bool>();
    result.data = false;
    try
    {
    IScheduler scheduler = schedulerFactory.GetScheduler();
    IJobDetail jobDetail = new JobDetailImpl(jobName, groupName, type, isDurable, requestsRecover);
    if (parameters != null)
    {
    foreach (var param in parameters)
    {
    jobDetail.JobDataMap.Add(param.Key, param.Value);
    }
    }
    ICronTrigger trigger = new CronTriggerImpl(jobName, groupName);
    trigger.CronExpressionString = time;
    if (!string.IsNullOrEmpty(jobtype))
    jobDetail.JobDataMap["jobtype"] = jobtype;
    scheduler.ScheduleJob(jobDetail, trigger);

    if (!scheduler.IsShutdown)
    {
    scheduler.Start();
    return result.Success(true);
    }
    return result.ErrorMsg("Quartz的调度器已关闭");
    }
    catch (Exception ex)
    {
    SysLogHelper.Error(ex);
    return result.ErrorMsg(ex.Message);
    }
    }

    public static KmmResult<bool> AddJob(string groupName, string jobName, Type type, string time, bool isDurable, bool requestsRecover, Dictionary<string, object> parameters = null)
    {
    KmmResult<bool> result = new KmmResult<bool>();
    result.data = false;
    try
    {
    IScheduler scheduler = schedulerFactory.GetScheduler();
    IJobDetail jobDetail = new JobDetailImpl(jobName, groupName, type, isDurable, requestsRecover);
    if (parameters != null)
    {
    foreach (var param in parameters)
    {
    jobDetail.JobDataMap.Add(param.Key, param.Value);
    }
    }
    ICronTrigger trigger = new CronTriggerImpl(jobName, groupName);
    trigger.CronExpressionString = time;
    scheduler.ScheduleJob(jobDetail, trigger);
    if (!scheduler.IsShutdown)
    {
    scheduler.Start();
    return result.Success(true);
    }
    return result.ErrorMsg("Quartz调度器已关闭");
    }
    catch (Exception ex)
    {
    SysLogHelper.Error(ex);
    return result.ErrorMsg(ex.Message);
    }
    }

    public static KmmResult<bool> AddJob(string groupName, string jobName, Type type, string time, bool isDurable, bool requestsRecover, JobDataMap jobdata)
    {
    KmmResult<bool> result = new KmmResult<bool>();
    result.data = false;
    try
    {
    IScheduler scheduler = schedulerFactory.GetScheduler();
    IJobDetail jobDetail = new JobDetailImpl(jobName, groupName, type, isDurable, requestsRecover);

    if (jobdata != null)
    {
    foreach (var d in jobdata)
    {
    jobDetail.JobDataMap.Add(d.Key, d.Value);
    }
    }
    ICronTrigger trigger = new CronTriggerImpl(jobName, groupName);
    trigger.CronExpressionString = time;
    jobDetail.JobDataMap["jobtype"] = type.ToString();
    scheduler.ScheduleJob(jobDetail, trigger);

    if (!scheduler.IsShutdown)
    {
    scheduler.Start();
    return result.Success(true);
    }
    return result.ErrorMsg("Quartz调度器已关闭");
    }
    catch (Exception ex)
    {
    SysLogHelper.Error(ex);
    return result.ErrorMsg(ex.Message);
    }
    }

    /// <summary>
    /// Author:tiny.wu
    /// Date:2016-04-01
    /// Desc:修改时间
    /// </summary>
    /// <param name="groupName">组名</param>
    /// <param name="jobName">job名称</param>
    /// <param name="time">调度时间</param>
    public static KmmResult<bool> ModifyJobTime(string groupName, string jobName, string time)
    {
    KmmResult<bool> result = new KmmResult<bool>();
    result.data = false;
    try
    {
    IScheduler scheduler = schedulerFactory.GetScheduler();
    ICronTrigger trigger = (CronTriggerImpl)scheduler.GetTrigger(new TriggerKey(jobName, groupName));
    if (trigger != null && !trigger.CronExpressionString.Equals(time))
    {
    IJobDetail jobDetail = scheduler.GetJobDetail(new JobKey(jobName, groupName));
    if (jobDetail != null)
    {
    RemoveJob(groupName, jobName);
    AddJob(groupName, jobName, jobDetail.JobType, time, true, false, jobDetail.JobDataMap);
    return result.Success(true);
    }
    else
    {
    result.ErrorMsg("该Quartz-Job不存在");
    }
    }
    else
    {
    result.ErrorMsg("该Quartz-Job的触发器不存在");
    }
    }
    catch (Exception ex)
    {
    SysLogHelper.Error(ex);
    result.ErrorMsg(ex.Message);
    }
    return result;
    }

    /// <summary>
    /// Author:tiny.wu
    /// Date:2016-04-01
    /// Desc:移除job
    /// </summary>
    /// <param name="groupName">分组名称</param>
    /// <param name="jobName">job名称</param>
    public static KmmResult<bool> RemoveJob(string groupName, string jobName)
    {
    KmmResult<bool> result = new KmmResult<bool>();
    result.data = false;
    try
    {
    IScheduler scheduler = schedulerFactory.GetScheduler();
    scheduler.PauseTrigger(new TriggerKey(jobName, groupName));
    scheduler.UnscheduleJob(new TriggerKey(jobName, groupName));
    scheduler.DeleteJob(new JobKey(jobName, groupName));
    return result.Success(true);
    }
    catch (Exception ex)
    {
    SysLogHelper.Error(ex);
    return result.ErrorMsg(ex.Message);
    }
    }

    /// <summary>
    /// Author:tiny.wu
    /// Date:2016-04-01
    /// Desc:唤醒一个job(job已经存在)
    /// </summary>
    /// <param name="groupName">分组名</param>
    /// <param name="jobName">job名称</param>
    public static KmmResult<bool> ResumeJob(string groupName, string jobName)
    {
    KmmResult<bool> result = new KmmResult<bool>();
    result.data = false;
    try
    {
    IScheduler scheduler = schedulerFactory.GetScheduler();
    scheduler.ResumeJob(new JobKey(groupName, jobName));
    return result.Success(true);
    }
    catch (Exception ex)
    {
    SysLogHelper.Error(ex);
    return result.ErrorMsg(ex.Message);
    }
    }

    /// <summary>
    /// Author:tiny.wu
    /// Date:2016-04-01
    /// Desc:暂停一个job
    /// </summary>
    /// <param name="groupName">分组名</param>
    /// <param name="jobName">job名称</param>
    public static KmmResult<bool> PauseJob(string groupName, string jobName)
    {
    KmmResult<bool> result = new KmmResult<bool>();
    result.data = false;
    try
    {
    IScheduler scheduler = schedulerFactory.GetScheduler();
    scheduler.PauseJob(new JobKey(groupName, jobName));
    return result.Success(true);
    }
    catch (Exception ex)
    {
    SysLogHelper.Error(ex);
    return result.ErrorMsg(ex.Message);
    }
    }

    /// <summary>
    /// 启动所有job
    /// </summary>
    public static KmmResult<bool> StartJobs()
    {
    KmmResult<bool> result = new KmmResult<bool>();
    result.data = false;
    try
    {
    IScheduler scheduler = schedulerFactory.GetScheduler();
    scheduler.Start();
    return result.Success(true);
    }
    catch (Exception ex)
    {
    SysLogHelper.Error(ex);
    return result.ErrorMsg(ex.Message);
    }
    }

    /// <summary>
    /// 停止所有job
    /// </summary>
    public static KmmResult<bool> ShutdownJobs()
    {
    KmmResult<bool> result = new KmmResult<bool>();
    result.data = false;
    try
    {
    IScheduler scheduler = schedulerFactory.GetScheduler();
    scheduler.Shutdown();
    return result.Success(true);
    }
    catch (Exception ex)
    {
    SysLogHelper.Error(ex);
    return result.ErrorMsg(ex.Message);
    }
    }

    /// <summary>
    /// 查询一个job add by yzl@20181011
    /// </summary>
    /// <param name="groupName"></param>
    /// <param name="jobName"></param>
    /// <returns></returns>
    public static KmmResult<string> GetJob(string groupName, string jobName)
    {
    KmmResult<string> result = new KmmResult<string>();
    try
    {
    IScheduler scheduler = schedulerFactory.GetScheduler();
    ICronTrigger trigger = (CronTriggerImpl)scheduler.GetTrigger(new TriggerKey(jobName, groupName));
    if (trigger != null)
    {
    IJobDetail jobDetail = scheduler.GetJobDetail(new JobKey(jobName, groupName));
    if (jobDetail != null)
    {
    string json = JsonHelper.JsonConvertSerialize(new { GroupName = groupName, JobName = jobName, DataType = jobDetail.JobType.AssemblyQualifiedName + "," + jobDetail.JobType.FullName, CronStr = trigger.CronExpressionString });
    return result.Success(json);
    }
    else
    {
    result.ErrorMsg("该Quartz-Job不存在");
    }
    }
    else
    {
    result.ErrorMsg("该Quartz-Job的触发器不存在");
    }
    }
    catch (Exception ex)
    {
    SysLogHelper.Error(ex);
    result.ErrorMsg(ex.Message);
    }
    return result;
    }


    }
    }

  • 相关阅读:
    UIImagePickerController从拍照、图库、相册获取图片
    swift2.0 UIImagePickerController 拍照 相册 录像
    UIImagePickerController拍照与摄像
    iOS 从相机或相册获取图片并裁剪
    Android播放音频的两种方式
    UICollectionView的基本使用
    UIImageView圆角,自适应图片宽高比例,图片拉伸,缩放比例和图片缩微图
    UIView属性clipsTobounds的应用
    iOS开发UI篇—CALayer简介
    chrome插件演示,经js转让chrome api清除浏览器缓存
  • 原文地址:https://www.cnblogs.com/opts/p/11781186.html
Copyright © 2011-2022 走看看