12 changed files with 27 additions and 161 deletions
@ -1,21 +0,0 @@ |
|||||
namespace MyCompanyName.MyProjectName.Extensions.Hangfire; |
|
||||
|
|
||||
public class AutoDeleteAfterSuccessAttributer : JobFilterAttribute, IApplyStateFilter |
|
||||
{ |
|
||||
private readonly TimeSpan _deleteAfter; |
|
||||
|
|
||||
public AutoDeleteAfterSuccessAttributer(TimeSpan timeSpan) |
|
||||
{ |
|
||||
_deleteAfter = timeSpan; |
|
||||
} |
|
||||
|
|
||||
public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction) |
|
||||
{ |
|
||||
context.JobExpirationTimeout = _deleteAfter; |
|
||||
} |
|
||||
|
|
||||
public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction) |
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
@ -1,78 +0,0 @@ |
|||||
namespace MyCompanyName.MyProjectName.Extensions.Hangfire |
|
||||
{ |
|
||||
/// <summary>
|
|
||||
/// Cron类型
|
|
||||
/// </summary>
|
|
||||
public static class CronType |
|
||||
{ |
|
||||
/// <summary>
|
|
||||
/// 周期性为分钟的任务
|
|
||||
/// </summary>
|
|
||||
/// <param name="interval">执行周期的间隔,默认为每分钟一次</param>
|
|
||||
/// <returns></returns>
|
|
||||
public static string Minute(int interval = 1) |
|
||||
{ |
|
||||
return "1 0/" + interval.ToString() + " * * * ? "; |
|
||||
} |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// 周期性为小时的任务
|
|
||||
/// </summary>
|
|
||||
/// <param name="minute">第几分钟开始,默认为第一分钟</param>
|
|
||||
/// <param name="interval">执行周期的间隔,默认为每小时一次</param>
|
|
||||
/// <returns></returns>
|
|
||||
public static string Hour(int minute = 1, int interval = 1) |
|
||||
{ |
|
||||
return "1 " + minute + " 0/" + interval.ToString() + " * * ? "; |
|
||||
} |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// 周期性为天的任务
|
|
||||
/// </summary>
|
|
||||
/// <param name="hour">第几小时开始,默认从1点开始</param>
|
|
||||
/// <param name="minute">第几分钟开始,默认从第1分钟开始</param>
|
|
||||
/// <param name="interval">执行周期的间隔,默认为每天一次</param>
|
|
||||
/// <returns></returns>
|
|
||||
public static string Day(int hour = 1, int minute = 1, int interval = 1) |
|
||||
{ |
|
||||
return "1 " + minute.ToString() + " " + hour.ToString() + " 1/" + interval.ToString() + " * ? "; |
|
||||
} |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// 周期性为周的任务
|
|
||||
/// </summary>
|
|
||||
/// <param name="dayOfWeek">星期几开始,默认从星期一点开始</param>
|
|
||||
/// <param name="hour">第几小时开始,默认从1点开始</param>
|
|
||||
/// <param name="minute">第几分钟开始,默认从第1分钟开始</param>
|
|
||||
/// <returns></returns>
|
|
||||
public static string Week(DayOfWeek dayOfWeek = DayOfWeek.Monday, int hour = 1, int minute = 1) |
|
||||
{ |
|
||||
return Cron.Weekly(dayOfWeek, hour, minute); |
|
||||
} |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// 周期性为月的任务
|
|
||||
/// </summary>
|
|
||||
/// <param name="day">几号开始,默认从一号开始</param>
|
|
||||
/// <param name="hour">第几小时开始,默认从1点开始</param>
|
|
||||
/// <param name="minute">第几分钟开始,默认从第1分钟开始</param>
|
|
||||
/// <returns></returns>
|
|
||||
public static string Month(int day = 1, int hour = 1, int minute = 1) |
|
||||
{ |
|
||||
return Cron.Monthly(day, hour, minute); |
|
||||
} |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// 周期性为年的任务
|
|
||||
/// </summary>
|
|
||||
/// <param name="month">几月开始,默认从一月开始</param>
|
|
||||
/// <param name="day">几号开始,默认从一号开始</param>
|
|
||||
/// <param name="hour">第几小时开始,默认从1点开始</param>
|
|
||||
/// <param name="minute">第几分钟开始,默认从第1分钟开始</param>
|
|
||||
/// <returns></returns>
|
|
||||
public static string Year(int month = 1, int day = 1, int hour = 1, int minute = 1) |
|
||||
{ |
|
||||
return Cron.Yearly(month, day, hour, minute); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,11 +0,0 @@ |
|||||
namespace MyCompanyName.MyProjectName.Extensions.Hangfire |
|
||||
{ |
|
||||
public class CustomHangfireAuthorizeFilter : IDashboardAuthorizationFilter |
|
||||
{ |
|
||||
public bool Authorize(DashboardContext context) |
|
||||
{ |
|
||||
var _currentUser = context.GetHttpContext().RequestServices.GetRequiredService<ICurrentUser>(); |
|
||||
return _currentUser.IsAuthenticated; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,24 +0,0 @@ |
|||||
namespace MyCompanyName.MyProjectName.Extensions.Hangfire; |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// 重试最后一次
|
|
||||
/// </summary>
|
|
||||
public class JobRetryLastFilter : JobFilterAttribute, IElectStateFilter |
|
||||
{ |
|
||||
private int RetryCount { get; } |
|
||||
|
|
||||
public JobRetryLastFilter(int retryCount) |
|
||||
{ |
|
||||
RetryCount = retryCount; |
|
||||
} |
|
||||
|
|
||||
|
|
||||
public void OnStateElection(ElectStateContext context) |
|
||||
{ |
|
||||
var retryAttempt = context.GetJobParameter<int>("RetryCount"); |
|
||||
if (RetryCount == retryAttempt) |
|
||||
{ |
|
||||
Log.Error("最后一次重试"); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,15 +0,0 @@ |
|||||
using MyCompanyName.MyProjectName.Jobs; |
|
||||
|
|
||||
namespace MyCompanyName.MyProjectName.Extensions.Hangfire |
|
||||
{ |
|
||||
public static class RecurringJobsExtensions |
|
||||
{ |
|
||||
public static void CreateRecurringJob(this ApplicationInitializationContext context) |
|
||||
{ |
|
||||
RecurringJob.AddOrUpdate<TestJob>("测试Job", e => e.ExecuteAsync(), CronType.Minute(1), new RecurringJobOptions() |
|
||||
{ |
|
||||
TimeZone = TimeZoneInfo.Local |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue