master
bicijinlian 5 years ago
parent 6c6e4acf33
commit d6a53faf12

@ -2,12 +2,13 @@
using Topshelf; using Topshelf;
using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.X509Certificates;
using System.Threading.Tasks;
namespace TopshelfStudy.NetCoreDemo namespace TopshelfStudy.NetCoreDemo
{ {
class Program class Program
{ {
static void Main(string[] args) static async Task Main(string[] args)
{ {
var topshelfExitCode = HostFactory.Run(config => var topshelfExitCode = HostFactory.Run(config =>
{ {
@ -37,6 +38,8 @@ namespace TopshelfStudy.NetCoreDemo
//退出码 //退出码
Environment.ExitCode = (int)Convert.ChangeType(topshelfExitCode, topshelfExitCode.GetTypeCode()); Environment.ExitCode = (int)Convert.ChangeType(topshelfExitCode, topshelfExitCode.GetTypeCode());
await Task.CompletedTask;
} }
} }
} }

@ -20,6 +20,8 @@ namespace TopshelfStudy.NetCoreDemo
{ {
private IScheduler _scheduler; private IScheduler _scheduler;
public readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
public CustomSchedulerListener(IScheduler scheduler) public CustomSchedulerListener(IScheduler scheduler)
{ {
_scheduler = scheduler; _scheduler = scheduler;
@ -27,7 +29,7 @@ namespace TopshelfStudy.NetCoreDemo
public Task JobAdded(IJobDetail jobDetail, CancellationToken cancellationToken = default(CancellationToken)) public Task JobAdded(IJobDetail jobDetail, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine($"{jobDetail.Key} 作业:被添加,成功启用"); logger.Info($"{jobDetail.Key} 作业:被添加,成功启用");
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -39,11 +41,11 @@ namespace TopshelfStudy.NetCoreDemo
{ {
if (_scheduler.CheckExists(jobKey).Result) if (_scheduler.CheckExists(jobKey).Result)
{ {
Console.WriteLine($"{jobKey} 作业:即将删除"); logger.Info($"{jobKey} 作业:即将删除");
} }
else else
{ {
Console.WriteLine($"{jobKey} 作业:完成删除"); logger.Info($"{jobKey} 作业:完成删除");
} }
return Task.CompletedTask; return Task.CompletedTask;
@ -54,7 +56,7 @@ namespace TopshelfStudy.NetCoreDemo
/// </summary> /// </summary>
public Task JobInterrupted(JobKey jobKey, CancellationToken cancellationToken = default(CancellationToken)) public Task JobInterrupted(JobKey jobKey, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine($"{jobKey} 作业:被中断"); logger.Info($"{jobKey} 作业:被中断");
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -64,7 +66,7 @@ namespace TopshelfStudy.NetCoreDemo
/// </summary> /// </summary>
public Task JobPaused(JobKey jobKey, CancellationToken cancellationToken = default(CancellationToken)) public Task JobPaused(JobKey jobKey, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine($"{jobKey} 作业:被暂停"); logger.Info($"{jobKey} 作业:被暂停");
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -74,7 +76,7 @@ namespace TopshelfStudy.NetCoreDemo
/// </summary> /// </summary>
public Task JobResumed(JobKey jobKey, CancellationToken cancellationToken = default(CancellationToken)) public Task JobResumed(JobKey jobKey, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine($"{jobKey} 作业:被继续"); logger.Info($"{jobKey} 作业:被继续");
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -84,7 +86,7 @@ namespace TopshelfStudy.NetCoreDemo
/// </summary> /// </summary>
public Task JobScheduled(ITrigger trigger, CancellationToken cancellationToken = default(CancellationToken)) public Task JobScheduled(ITrigger trigger, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine($"{trigger.Key} 触发器:添加到 调度器"); logger.Info($"{trigger.Key} 触发器:添加到 调度器");
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -100,8 +102,8 @@ namespace TopshelfStudy.NetCoreDemo
{ {
var jobKeys = _scheduler.GetJobKeys(GroupMatcher<JobKey>.GroupEquals(jobGroup)).Result; var jobKeys = _scheduler.GetJobKeys(GroupMatcher<JobKey>.GroupEquals(jobGroup)).Result;
foreach (var jobKey in jobKeys) foreach (var jobKey in jobKeys)
{ {
} }
Console.WriteLine($"{jobGroup} 作业组:被暂停"); Console.WriteLine($"{jobGroup} 作业组:被暂停");
@ -111,7 +113,7 @@ namespace TopshelfStudy.NetCoreDemo
public Task JobsResumed(string jobGroup, CancellationToken cancellationToken = default(CancellationToken)) public Task JobsResumed(string jobGroup, CancellationToken cancellationToken = default(CancellationToken))
{ {
var jobKeys = _scheduler.GetJobKeys(GroupMatcher<JobKey>.GroupEquals(jobGroup)).Result; var jobKeys = _scheduler.GetJobKeys(GroupMatcher<JobKey>.GroupEquals(jobGroup)).Result;
Console.WriteLine($"{jobGroup} 作业组:被继续"); logger.Info($"{jobGroup} 作业组:被继续");
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -120,13 +122,13 @@ namespace TopshelfStudy.NetCoreDemo
/// </summary> /// </summary>
public Task JobUnscheduled(TriggerKey triggerKey, CancellationToken cancellationToken = default(CancellationToken)) public Task JobUnscheduled(TriggerKey triggerKey, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine($"{triggerKey.Name} 触发器:Unscheduled"); logger.Info($"{triggerKey.Name} 触发器:Unscheduled");
return Task.CompletedTask; return Task.CompletedTask;
} }
public Task SchedulerError(string msg, SchedulerException cause, CancellationToken cancellationToken = default(CancellationToken)) public Task SchedulerError(string msg, SchedulerException cause, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine($"Scheduler出现错误:{msg}"); logger.Info($"Scheduler出现错误:{msg}");
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -162,31 +164,31 @@ namespace TopshelfStudy.NetCoreDemo
public Task TriggerFinalized(ITrigger trigger, CancellationToken cancellationToken = default(CancellationToken)) public Task TriggerFinalized(ITrigger trigger, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine($"{trigger.Key.Name}:TriggerFinalized"); logger.Info($"{trigger.Key.Name}:TriggerFinalized");
return Task.CompletedTask; return Task.CompletedTask;
} }
public Task TriggerPaused(TriggerKey triggerKey, CancellationToken cancellationToken = default(CancellationToken)) public Task TriggerPaused(TriggerKey triggerKey, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine($"{triggerKey.Name}:TriggerPaused"); logger.Info($"{triggerKey.Name}:TriggerPaused");
return Task.CompletedTask; return Task.CompletedTask;
} }
public Task TriggerResumed(TriggerKey triggerKey, CancellationToken cancellationToken = default(CancellationToken)) public Task TriggerResumed(TriggerKey triggerKey, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine($"{triggerKey.Name}:TriggerResumed"); logger.Info($"{triggerKey.Name}:TriggerResumed");
return Task.CompletedTask; return Task.CompletedTask;
} }
public Task TriggersPaused(string triggerGroup, CancellationToken cancellationToken = default(CancellationToken)) public Task TriggersPaused(string triggerGroup, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine($"{triggerGroup}:TriggersPaused"); logger.Info($"{triggerGroup}:TriggersPaused");
return Task.CompletedTask; return Task.CompletedTask;
} }
public Task TriggersResumed(string triggerGroup, CancellationToken cancellationToken = default(CancellationToken)) public Task TriggersResumed(string triggerGroup, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine($"{triggerGroup}:TriggersResumed"); logger.Info($"{triggerGroup}:TriggersResumed");
return Task.CompletedTask; return Task.CompletedTask;
} }
} }

@ -16,6 +16,8 @@ namespace TopshelfStudy.NetCoreDemo
/// </summary> /// </summary>
public class CustomTriggerListener : ITriggerListener public class CustomTriggerListener : ITriggerListener
{ {
public readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
public string Name { get; } = nameof(CustomTriggerListener); public string Name { get; } = nameof(CustomTriggerListener);
public CustomTriggerListener() public CustomTriggerListener()
@ -29,7 +31,7 @@ namespace TopshelfStudy.NetCoreDemo
/// </summary> /// </summary>
public Task TriggerComplete(ITrigger trigger, IJobExecutionContext context, SchedulerInstruction triggerInstructionCode, CancellationToken cancellationToken = default(CancellationToken)) public Task TriggerComplete(ITrigger trigger, IJobExecutionContext context, SchedulerInstruction triggerInstructionCode, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine("触发器执行后"); logger.Info("触发器执行后");
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -40,7 +42,7 @@ namespace TopshelfStudy.NetCoreDemo
/// </summary> /// </summary>
public Task TriggerFired(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default(CancellationToken)) public Task TriggerFired(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine("触发器执行前"); logger.Info("触发器执行前");
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -52,7 +54,7 @@ namespace TopshelfStudy.NetCoreDemo
/// </summary> /// </summary>
public Task TriggerMisfired(ITrigger trigger, CancellationToken cancellationToken = default(CancellationToken)) public Task TriggerMisfired(ITrigger trigger, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine("错过触发时间,本次任务丢失."); logger.Info("错过触发时间,本次任务丢失.");
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -65,7 +67,7 @@ namespace TopshelfStudy.NetCoreDemo
/// </returns> /// </returns>
public Task<bool> VetoJobExecution(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default(CancellationToken)) public Task<bool> VetoJobExecution(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default(CancellationToken))
{ {
Console.WriteLine("触发器审核通过,继续执行."); logger.Info("触发器审核通过,继续执行.");
return Task.FromResult(false); return Task.FromResult(false);
} }
} }

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Quartz; using Quartz;
@ -10,14 +11,14 @@ namespace TopshelfStudy.NetCoreDemo
{ {
public class JobDemo : IJob public class JobDemo : IJob
{ {
NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
public async Task Execute(IJobExecutionContext context) public async Task Execute(IJobExecutionContext context)
{ {
//模拟业务操作 //模拟业务操作
string jobName = "测试作业"; Logger.Info($"执行作业:测试作业");
Console.WriteLine($"{jobName} 开始执行");
Console.WriteLine($"{jobName} 执行中..."); await Task.Delay(0);
await Task.Delay(0*1000);
Console.WriteLine($"{jobName} 执行完毕.");
} }
} }
} }

Loading…
Cancel
Save