【发布时间】:2016-07-20 14:41:24
【问题描述】:
我有一台具有约 50 个重复作业的 hangfire 服务器。在 IIS 上设置 Hangfire,如 this example。 像这样在 startup.cs 中添加到 hangfire 的重复作业:
RecurringJob.AddOrUpdate(job.desctiprion,
() => job.startJob(),
job.cron,
TimeZoneInfo.Local);
我需要添加每分钟运行的新重复作业。但是这项工作几乎不可能运行更长的时间。我的目标 - 提供同时工作的只是这个工作的一个例子。
有哪些解决方案?据我了解,需要一个线程队列,但队列不支持线程设置。
【问题讨论】:
-
目前尚不清楚您要做什么,“只有一个”和“同时”似乎并没有真正结合在一起。这:只提供一个同时工作的工作示例没有任何意义。你能澄清一下吗?
-
所以你只是想确保这项工作不会与自身重叠?
-
我需要避免在某一时刻有多个此重复作业实例正在处理中的情况。是的,我只是想确保这项工作不会与自身重叠。例如:第一个作业在 17:00 运行,此运行需要 2 分 30 秒。我需要避免在 17:01 和 17:02 运行作业,但在 17:03 运行作业。我知道我可以使用数据库中的任何标志来验证作业是否正在运行。但或许在 Hangfire 中对这种情况有一个简单而正确的解决方案。