CloudGamingAdmin/admin-server/CloudGaming.Core.Quartz/Services/IQuartzJobService.cs
2024-11-15 02:58:48 +08:00

57 lines
1.8 KiB
C#

namespace CloudGaming.Core.Quartz.Services;
/// <summary>
///
/// </summary>
public interface IQuartzJobService : ITransientDependency
{
/// <summary>
/// 开始运行一个任务调度器
/// </summary>
/// <typeparam name="TJobTaskInfo"></typeparam>
/// <typeparam name="TJob"></typeparam>
/// <param name="jobTaskInfo"></param>
/// <returns></returns>
Task<bool> RunAsync<TJobTaskInfo, TJob>(TJobTaskInfo jobTaskInfo)
where TJobTaskInfo : IQuartzJobInfoEntity
where TJob : IJob
;
/// <summary>
/// 开始运行一个任务调度器
/// </summary>
/// <param name="taskName">任务名称唯一</param>
/// <param name="cron">任务表达式</param>
/// <param name="call">被执行事件</param>
/// <param name="groupName">分组</param>
/// <returns></returns>
Task<(string? TaskName, string? GroupName)> RunAsync(string taskName, string cron, Action<(string GroupName, string TaskName)> call, string groupName = "default-group")
;
/// <summary>
/// 判断任务是否存在 和 运行状态
/// </summary>
/// <param name="taskName"></param>
/// <param name="groupName"></param>
/// <returns></returns>
Task<ITrigger?> GetTrigger(string taskName, string groupName = "default-group");
/// <summary>
/// 关闭任务调度
/// </summary>
/// <param name="taskName">任务名称</param>
/// <param name="groupName">组名称</param>
/// <returns></returns>
Task<bool> CloseAsync(string taskName, string groupName = "default-group");
/// <summary>
/// 验证 Cron 表达式是否有效
/// </summary>
/// <param name="cronExpression"></param>
/// <returns></returns>
bool IsValidExpression(string cronExpression);
}