如何在Hangfire重复作业中获得计划执行日期时间



我正在尝试迁移Quartz支持的现有ABP项目。NET到Hangfire。

我有一份经常性的工作,我需要在工作中获得预定的解雇时间。请注意,我不需要实际的执行时间,而是需要预期的执行时间。假设我有一份定期工作安排在每周一上午10:00;当作业运行时,我需要在上午10点获得指示当前星期一的DateTime。

我是否缺少PerformContext或JobData属性?

public class TestJob : BackgroundJob<PerformContext>, ITransientDependency
{
private readonly IRepository<User, long> _usersRepository;
public TestJob(IRepository<User, long> usersRepository)
{
_usersRepository = usersRepository;
}
public override void Execute(PerformContext context)
{
var jobData = context.Connection.GetJobData(context.BackgroundJob.Id);
// How to get planned execution time for this job run?
}
}

如果我的定期作业计划每小时运行一次,而我的服务器停机5个小时,我确实需要运行所有5次缺失的运行,并且对于每一次,我都希望引用正确的计划日期时间。你对如何做到这一点有什么建议吗?

IJobExecutionContext.ScheduledFireTimeUtc下的Quartz中可以找到相同的信息

Hangfire讨论链接

我会使用延迟作业,这可能会提供更多的控制。执行作业后,将作业本身放入一个具有计算延迟间隔的延迟队列中。

此外,Hangfire监测API可能也是达到这一目标的一种方法。

最新更新