|
|
|
|
using log4net;
|
|
|
|
|
using Quartz;
|
|
|
|
|
using Quartz.Impl;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.ServiceProcess;
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
namespace JobScheduler
|
|
|
|
|
{
|
|
|
|
|
public partial class JobService : ServiceBase
|
|
|
|
|
{
|
|
|
|
|
private IScheduler scheduler;
|
|
|
|
|
private ILog log = LogManager.GetLogger(typeof(JobService));
|
|
|
|
|
|
|
|
|
|
public JobService()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnStart(string[] args)
|
|
|
|
|
{
|
|
|
|
|
log.Debug("=========================启动服务=========================");
|
|
|
|
|
|
|
|
|
|
scheduler = StdSchedulerFactory.GetDefaultScheduler();
|
|
|
|
|
scheduler.ListenerManager.AddSchedulerListener(new SchedulerListener());
|
|
|
|
|
scheduler.Start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnStop()
|
|
|
|
|
{
|
|
|
|
|
log.Debug("=========================停止服务=========================");
|
|
|
|
|
|
|
|
|
|
scheduler.Shutdown();
|
|
|
|
|
scheduler.Clear();
|
|
|
|
|
scheduler = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SchedulerListener : ISchedulerListener
|
|
|
|
|
{
|
|
|
|
|
ILog log = LogManager.GetLogger(typeof(SchedulerListener));
|
|
|
|
|
|
|
|
|
|
public void JobAdded(IJobDetail jobDetail)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"JobAdded:{jobDetail.Key}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void JobDeleted(JobKey jobKey)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"JobDeleted:{jobKey}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void JobPaused(JobKey jobKey)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"JobPaused:{jobKey}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void JobResumed(JobKey jobKey)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"JobResumed:{jobKey}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void JobScheduled(ITrigger trigger)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"JobScheduled:{trigger.Key.Name}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void JobsPaused(string jobGroup)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void JobsResumed(string jobGroup)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void JobUnscheduled(TriggerKey triggerKey)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"JobUnscheduled:{triggerKey.Name}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SchedulerError(string msg, SchedulerException cause)
|
|
|
|
|
{
|
|
|
|
|
log.Error($"SchedulerError:{msg}");
|
|
|
|
|
log.Error($"{cause.Message}");
|
|
|
|
|
log.Error($"{cause.StackTrace}");
|
|
|
|
|
if (cause.InnerException != null)
|
|
|
|
|
{
|
|
|
|
|
log.Error(cause.InnerException.Message);
|
|
|
|
|
log.Error(cause.InnerException.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SchedulerInStandbyMode()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SchedulerShutdown()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SchedulerShuttingdown()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SchedulerStarted()
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"SchedulerStarted");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SchedulerStarting()
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"SchedulerStarting");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SchedulingDataCleared()
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"SchedulingDataCleared");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void TriggerFinalized(ITrigger trigger)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"TriggerFinalized:{trigger.Key}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void TriggerPaused(TriggerKey triggerKey)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"TriggerPaused:{triggerKey}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void TriggerResumed(TriggerKey triggerKey)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"TriggerResumed:{triggerKey}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void TriggersPaused(string triggerGroup)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void TriggersResumed(string triggerGroup)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|