如何计划批处理作业在特定时间点运行

本文关键字:定时间 运行 作业 批处理 何计划 计划 | 更新日期: 2023-09-27 18:37:25

在 C#/asp.net 应用程序中,我搜索一种将作业安排在特定时间点执行一次的方法。例如。于 二月 4th 2016 在 02:00.那是:

  1. 是否有任何框架可以做到这一点(安排作业在特定时间点执行)?我知道 IBM 的 Tivoli Workload Scheduler,但这似乎相当陈旧且昂贵。

  2. 如果框架附带一个 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);
}