Program.cs
2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using Hh.Mes.Common.log;
using Hh.Mes.Service.Repository;
using log4net;
using log4net.Config;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json.Linq;
using Quartz;
using Quartz.Impl;
using Quartz.Logging;
using System.Reflection;
using System.Reflection.Metadata;
using System.Security.Cryptography;
namespace Hh.Mes.Quartz
{
internal class Program
{
static void Main(string[] args)
{
#region Log4Net
Log4NetHelper.Instance.Repository = LogManager.CreateRepository("NETCoreRepository");
XmlConfigurator.Configure(Log4NetHelper.Instance.Repository, new FileInfo(Path.GetDirectoryName(typeof(Program).Assembly.Location) + "/Config/log4net.config"));
#endregion
Console.WriteLine("开始启动---------------------------------------------");
//1.创建调度单元
Task<IScheduler> tsk = StdSchedulerFactory.GetDefaultScheduler();
IScheduler scheduler = tsk.Result;
Log4NetHelper.Instance.Info("创建调度单元完成。");
var configs = XmlHelper.GetXmlToList();
foreach (var config in configs)
{
if (config.IsEnable != null && config.IsEnable.ToLower() == "1")
{
//2.创建一个具体的作业即job(具体的job需要单独在一个文件中执行)
Type jobType = Type.GetType(config.ClassName);
if (jobType == null)
{
Console.WriteLine($"无法找到类 {config.ClassName},请检查配置。");
continue;
}
IJobDetail job = JobBuilder.Create(jobType).WithIdentity(config.ServiceName).Build();
//3.创建并配置一个触发器trigger,
ITrigger _CtroTrigger = TriggerBuilder.Create()
.WithIdentity($"定时确认{config.ServiceName}")
.WithCronSchedule(config.Cron.ToString())
.Build()
as ITrigger;
//4.将job和trigger加入到作业调度池中
scheduler.ScheduleJob(job, _CtroTrigger);
Console.WriteLine($"已经将{config.ServiceName}的job和trigger加入到作业调度池中。");
Log4NetHelper.Instance.Info($"已经将{config.ServiceName}的job和trigger加入到作业调度池中。");
}
}
scheduler.Start();
Console.ReadKey();
}
}
}