12345市长热线标准版-后端

QuartzWorker.cs 2.1KB

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