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