1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using FCS.Common;
- using FCS.Models;
- using Quartz;
- using Quartz.Impl;
- using System;
- using System.Collections.Generic;
- using System.Collections.Specialized;
- using System.Configuration;
- using System.Diagnostics;
- using System.IO;
- using System.Linq;
- using System.Reflection;
- namespace FCS.Crawler
- {
- /// <summary>
- /// 作业管理类
- /// </summary>
- public class JobManage
- {
- private IScheduler _sched = null;
- /// <summary>
- /// 开始所有作业调度
- /// </summary>
- public void JobStart()
- {
- string configFile = AppDomain.CurrentDomain.BaseDirectory + "/XmlConfig/FCSConfig.xml";
- List<FCSConfig> configs = CommonHelper.ConvertXMLToObject<FCSConfig>(configFile, "FCSSettings");
- var properties = new NameValueCollection
- {
- ["author"] = "同鑫网络"
- };
- ISchedulerFactory sf = new StdSchedulerFactory(properties);
- _sched = sf.GetScheduler();
- List<Type> allInheirtFromIJob = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IJob))).ToList();
- foreach (FCSConfig config in configs)
- {
- Type jobType = allInheirtFromIJob.FirstOrDefault(s => s.Name == config.JobName);
- if (jobType == null) continue;
- IJobDetail job = JobBuilder.Create(jobType)
- .WithIdentity(config.JobIdentityName, config.JobGroup)
- .Build();
- ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
- .WithIdentity(config.TriggerIdentityName, config.JobGroup)
- .WithCronSchedule(config.CronExpression)
- .Build();
- foreach (PropertyInfo property in typeof(FCSConfig).GetProperties())
- {
- job.JobDataMap.Put(property.Name, property.GetValue(config, null));
- }
- DateTimeOffset ft = _sched.ScheduleJob(job, trigger);
- Trace.WriteLine(ft.DateTime);
- }
- _sched.Start();
- }
- /// <summary>
- /// 停止所有作业调度
- /// </summary>
- public void JobStop()
- {
- if (_sched != null && _sched.IsStarted)
- _sched.Shutdown(true);
- }
-
- }
- }
|