人民医院API

QuartzWorker.cs 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using Quartz;
  2. using Quartz.Impl;
  3. using Quartz.Impl.Triggers;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Collections.Specialized;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace RMYY_CallCenter_Api.QuartzWorker
  11. {
  12. public class QuartzWorker
  13. {
  14. readonly IScheduler _scheduler;
  15. public QuartzWorker()
  16. {
  17. var properties = new NameValueCollection();
  18. //properties["quartz.scheduler.instanceName"] = "RemoteServerSchedulerClient";
  19. // 设置线程池
  20. properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz";
  21. properties["quartz.threadPool.threadCount"] = "5";
  22. properties["quartz.threadPool.threadPriority"] = "Normal";
  23. // 远程输出配置
  24. properties["quartz.scheduler.exporter.type"] = "Quartz.Simpl.RemotingSchedulerExporter, Quartz";
  25. properties["quartz.scheduler.exporter.port"] = "899";
  26. properties["quartz.scheduler.exporter.bindName"] = "QuartzScheduler";
  27. properties["quartz.scheduler.exporter.channelType"] = "tcp";
  28. var schedulerFactory = new StdSchedulerFactory(properties);
  29. _scheduler = schedulerFactory.GetScheduler();
  30. }
  31. /// <summary>
  32. /// 添加一个任务
  33. /// </summary>
  34. /// <param name="job"></param>
  35. public void AddWork(QuartzJob job)
  36. {
  37. var type = job.GetType();
  38. // 创建一个工作
  39. var jobName = "JobName_" + type;
  40. var jobGroup = "JobGroup_" + type;
  41. var jobDetail = new JobDetailImpl(jobName, jobGroup, type, true, true);
  42. // 创建一个触发器
  43. var trigger = new CronTriggerImpl("trigger" + jobName, "triggergroup" + jobName, jobName, jobGroup, job.CronExpression);
  44. _scheduler.AddJob(jobDetail, true);
  45. _scheduler.ScheduleJob(trigger);
  46. }
  47. /// <summary>
  48. /// 开始运行
  49. /// </summary>
  50. public void Start()
  51. {
  52. _scheduler.Start();
  53. }
  54. /// <summary>
  55. /// 停止运行
  56. /// </summary>
  57. public void Stop()
  58. {
  59. _scheduler.Shutdown(true);
  60. }
  61. }
  62. }