IwbQuartzScheduleJobManager.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading;
  6. using System.Threading.Tasks;
  7. using Abp.BackgroundJobs;
  8. using Abp.Dependency;
  9. using Abp.Extensions;
  10. using Abp.Quartz;
  11. using Abp.Quartz.Configuration;
  12. using Quartz;
  13. using ShwasherSys.Common;
  14. namespace ShwasherSys
  15. {
  16. public class JobTaskHelp:ITransientDependency
  17. {
  18. protected IIwbQuartzScheduleJobManager IwbQuartzScheduleJobManager;
  19. public JobTaskHelp(IIwbQuartzScheduleJobManager iwbQuartzScheduleJobManager)
  20. {
  21. IwbQuartzScheduleJobManager = iwbQuartzScheduleJobManager;
  22. }
  23. public void StartJob<T>(string jobKey,string jobKeyGroup, string cronExpress) where T: JobBase
  24. {
  25. IwbQuartzScheduleJobManager.DeleteJob(jobKey, jobKeyGroup);
  26. IwbQuartzScheduleJobManager.ScheduleAsync<T>(job =>
  27. {
  28. job.WithIdentity(jobKey, jobKeyGroup);
  29. }, trigger =>
  30. {
  31. trigger.WithIdentity(jobKey, jobKeyGroup)
  32. .WithCronSchedule(cronExpress)
  33. .ForJob(jobKey, jobKeyGroup)
  34. .Build();
  35. });
  36. }
  37. public void StopJob(string jobKey, string jobGroupKey)
  38. {
  39. if (IwbQuartzScheduleJobManager.CheckJobIsExist(jobKey, jobGroupKey))
  40. {
  41. IwbQuartzScheduleJobManager.DeleteJob(jobKey, jobGroupKey);
  42. }
  43. }
  44. }
  45. public class IwbQuartzScheduleJobManager : QuartzScheduleJobManager, IIwbQuartzScheduleJobManager
  46. {
  47. private readonly IBackgroundJobConfiguration _backgroundJobConfiguration;
  48. private readonly IAbpQuartzConfiguration _quartzConfiguration;
  49. public IwbQuartzScheduleJobManager(IAbpQuartzConfiguration quartzConfiguration, IBackgroundJobConfiguration backgroundJobConfiguration):base(quartzConfiguration, backgroundJobConfiguration)
  50. {
  51. this._quartzConfiguration = quartzConfiguration;
  52. this._backgroundJobConfiguration = backgroundJobConfiguration;
  53. }
  54. public bool CheckJobIsExist(JobKey key)
  55. {
  56. return _quartzConfiguration.Scheduler.CheckExists(key).Result;
  57. }
  58. public bool CheckJobIsExist(string jobName, string jobGroupName="")
  59. {
  60. if (jobGroupName.IsNullOrEmpty())
  61. {
  62. jobGroupName = jobName + "-G";
  63. }
  64. JobKey key = new JobKey(jobName, jobGroupName);
  65. return CheckJobIsExist(key);
  66. }
  67. public async Task DeleteJob(string jobKey, string jobGroupKey)
  68. {
  69. if (jobGroupKey.IsNullOrEmpty())
  70. {
  71. jobGroupKey = jobKey + "-G";
  72. }
  73. JobKey key = new JobKey(jobKey, jobGroupKey);
  74. await _quartzConfiguration.Scheduler.DeleteJob(key);
  75. }
  76. }
  77. public interface IIwbQuartzScheduleJobManager : IQuartzScheduleJobManager
  78. {
  79. /// <summary>
  80. /// 检查Job是否已存在;
  81. /// </summary>
  82. /// <param name="key"></param>
  83. /// <returns></returns>
  84. bool CheckJobIsExist(JobKey key);
  85. bool CheckJobIsExist(string jobName, string jobGroupName="");
  86. Task DeleteJob(string jobKey, string jobGroupKey = "");
  87. }
  88. }