如何解决如何在Hangfire定期工作中获得计划的执行DateTime?
我正在尝试将Quartz.NET支持的现有ABP项目迁移到Hangfire。
我有一个定期工作,我需要在工作中安排排班时间。请注意,我不需要实际的执行时间,而是需要预期的时间。假设我有一个定期工作,计划在每个星期一的上午10:00进行;作业运行时,我需要获取一个DateTime,指示当前星期一是上午10点。
我缺少一些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个丢失的运行,并且我希望为每个运行都引用正确的计划日期时间。您对如何做到这一点有什么建议吗?
相同的信息可以在Quartz的IJobExecutionContext.ScheduledFireTimeUtc
下找到
解决方法
我会使用延迟的工作,这可能会提供更多控制权。作业执行后,将作业本身放入具有延迟间隔的延迟队列中。
此外,Hangfire监控器API可能也是实现此目标的一种方式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。