using EnergiNet.Controllers;
using EnergiNet.Utility;
using Quartz;
using Quartz.Impl;
using Quartz.Impl.Triggers;
using System;
using System.Net;
using System.Threading.Tasks;
using System.Web.Configuration;
namespace Quartz.Utility
{
public class Quertz : IJob
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void Execute(IJobExecutionContext context)
{
if (context.JobDetail.Key.Name.Equals("Job1"))
{
}
if (context.JobDetail.Key.Name.Equals("Job2"))
{
}
if (context.JobDetail.Key.Name.Equals("Job4"))
{
InsertTimeseries();
}
}
public void DeleteMeterpoint()
{
}
public async Task InsertMeterpoint()
{
}
public async Task InsertTimeseries()
{
}
public void DoMoreWork()
{
}
}
}
public class StartJob
{
private static IScheduler _scheduler;
static string DeleteMeterTime = WebConfigurationManager.AppSettings["DeleteMeter"];
static string InsertMeterTime = WebConfigurationManager.AppSettings["InsertMeter"];
static string InsertTimeseriesTime = WebConfigurationManager.AppSettings["InsertTimeseries"];
public StartJob()
{
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
_scheduler = schedulerFactory.GetScheduler();
_scheduler.Start();
Console.WriteLine("Starting Scheduler");
AddJob();
}
public static void AddJob()
{
Quertz quertzJob = new Quertz(); //This Constructor needs to be parameterless
JobDetailImpl jobDetail1 = new JobDetailImpl("Job1", "Group1", quertzJob.GetType());
// "0 0/5 * * * ?"
CronTriggerImpl trigger1 = new CronTriggerImpl("Trigger1", "Group1", DeleteMeterTime);
_scheduler.ScheduleJob(jobDetail1, trigger1);
JobDetailImpl jobDetail2 = new JobDetailImpl("Job2", "Group1", quertzJob.GetType());
CronTriggerImpl trigger2 = new CronTriggerImpl("Trigger2", "Group1", InsertMeterTime); //0 0/2 * * * ?
_scheduler.ScheduleJob(jobDetail2, trigger2);
JobDetailImpl jobDetail4 = new JobDetailImpl("Job4", "Group1", quertzJob.GetType());
CronTriggerImpl trigger4 = new CronTriggerImpl("Trigger4", "Group1", InsertTimeseriesTime);
_scheduler.ScheduleJob(jobDetail4, trigger4);
DateTimeOffset? nextFireTime = trigger1.GetNextFireTimeUtc();
Console.WriteLine("Next Fire Time:" + nextFireTime.Value);
}
}
Web config setting for cron expression quartz library.
<add key="DeleteMeter" value="0 1 2,14 * * ?" />
<add key="InsertMeter" value="0 3 2,14 * * ?" />
<add key="InsertTimeseries" value="0 5 2,14 * * ?" />