如何计划批处理作业在特定时间点运行
本文关键字:定时间 运行 作业 批处理 何计划 计划 | 更新日期: 2023-09-27 18:37:25
在 C#/asp.net 应用程序中,我搜索一种将作业安排在特定时间点执行一次的方法。例如。于 二月 4th 2016 在 02:00.那是:
-
是否有任何框架可以做到这一点(安排作业在特定时间点执行)?我知道 IBM 的 Tivoli Workload Scheduler,但这似乎相当陈旧且昂贵。
-
如果框架附带一个 Web 仪表板,允许作业管理员管理(计划和概述)作业,我会有一些日历之类的视图,那就太好了。
Hangfire 通过将 DateTime 值传递到调度方法中来执行您想要的操作:
BackgroundJob.Schedule(yourMethodCall, new DateTime(2015, 03, 07, 12, 00, 00))
带有一个漂亮的网络前端:)
如果要
在 c# 中计划作业,请查看 http://www.quartz-scheduler.net/
如果你在基于Windows的服务器上运行,那么你可以使用Revalee开源项目来解决这个问题。Revalee 作为 Windows 服务运行,将所有计划任务存储在持久性数据存储中(特别是可扩展存储引擎 (ESE) [又名。JET Blue]),这样即使整个服务器需要重新启动,您也不会丢失状态。当您的任务到期时,Revalee 会回调您的应用程序,以触发您需要运行的任何任务。
例如,在 C# ASP.NET 应用程序中,您将像这样注册一个 Revalee 回调(在安装和配置 Revalee.Client 包之后):
private void ScheduleSendMessage()
{
// The callback time will be 4 Feb 2016 2:00 UTC (example assumes UTC)
DateTimeOffset callbackTime = new DateTimeOffset(2016, 2, 4, 2, 0, 0, 0, TimeSpan.Zero);
// The callback url is set (your send message code will reside there)
Uri callbackUrl = new Uri("http://mywebapp.com/SendMessage.aspx");
// Register the callback request with the Revalee service
RevaleeRegistrar.ScheduleCallback(callbackTime, callbackUrl);
}