Sin descripción

QuartzWorker.cs 2.2KB

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