最近在搭建公司的数据采集系统,了解到了Quartz.net。通过这篇文章记录下Quartz.net的简单使用。
static void Main(string[] args)
{
//从工厂中获取一个调度器实例化
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start(); //开启调度器
//==========例子1(简单使用)===========
IJobDetail job1 = JobBuilder.Create<TestJob>() //创建一个作业
.WithIdentity("作业名称", "作业组")
.Build();
ITrigger trigger1 = TriggerBuilder.Create()
.WithIdentity("触发器名称", "触发器组")
.StartNow() //现在开始
.WithSimpleSchedule(x => x //触发时间,5秒一次。
.WithIntervalInSeconds(5)
.RepeatForever()) //不间断重复执行
.Build();
scheduler.ScheduleJob(job1, trigger1); //把作业,触发器加入调度器。
//==========例子2 (执行时 作业数据传递,时间表达式使用)===========
IJobDetail job2 = JobBuilder.Create<TestJob2>()
.WithIdentity("myJob", "group1")
.UsingJobData("jobSays", "Hello World!")
.Build();
// ITrigger trriger =new SimpleTriggerImpl("myTrigger", null, DateTime.UtcNow.AddSeconds(1), null, 0, TimeSpan.Zero);
//ITrigger trriger = new SimpleTriggerImpl("myTrigger", null, DateTime.UtcNow.AddSeconds(1), null, SimpleTriggerImpl.RepeatIndefinitely, TimeSpan.FromSeconds(30));
//ITrigger trriger = new SimpleTriggerImpl("myTrigger", null, DateTime.UtcNow.AddSeconds(1), DateTime.UtcNow.AddSeconds(3), SimpleTriggerImpl.RepeatIndefinitely, TimeSpan.FromSeconds(1));
//ITrigger trriger = new SimpleTriggerImpl("myTrigger", null, DateTime.UtcNow.AddSeconds(1), null, 3, TimeSpan.FromSeconds(1)); //不算当前一次 实际执行次数为当前次数+1
// ITrigger trriger = new SimpleTriggerImpl("myTrigger", null, DateTime.UtcNow.AddSeconds(1), null, 3, TimeSpan.FromSeconds(1)); //不算当前一次 实际执行次数为当前次数+1
ITrigger trriger = new SimpleTriggerImpl("myTrigger", null, DateTime.UtcNow.AddSeconds(1), null, 3, TimeSpan.FromSeconds(1)); //不算当前一次 实际执行次数为当前次数+1
//ITrigger trigger2 = TriggerBuilder.Create()
// .WithIdentity("mytrigger", "group1")
// .StartNow()
// .WithCronSchedule("/5 * * ? * *") //时间表达式,5秒一次
// .Build();
//ITrigger trrigers = TriggerBuilder.Create()
// .WithIdentity("adfa", "asdfasd")
// .StartAt(DateTime.UtcNow.AddSeconds(1))
// .WithCronSchedule("0 49 10 7 7 ? *")
// .Build();
scheduler.ScheduleJob(job2, trriger);
Console.Read();
}
}
public sealed class TestJob : IJob
{
private readonly ILog _logger = LogManager.GetLogger(typeof(TestJob));
public void Execute(IJobExecutionContext context)
{
Console.WriteLine("TestJob测试");
_logger.InfoFormat("TestJob测试");
}
}
public sealed class TestJob2 : IJob
{
private readonly ILog _logger = LogManager.GetLogger(typeof(TestJob2));
public void Execute(IJobExecutionContext context)
{
Console.WriteLine("TestJob2测试");
_logger.InfoFormat("TestJob2测试");
}
}