繁体   English   中英

如何安排批处理作业在特定时间点运行?

[英]How to schedule a batch job to run at a specific point in time?

在C#/ asp.net应用程序中,我寻求一种计划将作业在特定时间点执行一次的方法 例如。 在2016年2月4日02:00。 那是:

  1. 有没有可以做到这一点的框架(安排作业在特定的时间点执行)? 我知道IBM的Tivoli Workload Scheduler,但是那看起来相当老而且昂贵。

  2. 如果框架附带一个Web仪表板,那将是很好的,该仪表板允许工作管理员管理(计划和概述)某些类似于日历的工作。

Hangfire通过将DateTime值传递给schedule方法来完全满足您的要求:

BackgroundJob.Schedule(yourMethodCall, new DateTime(2015, 03, 07, 12, 00, 00))

也带有一个不错的Web前端:)

如果要使用C#计划作业,请访问http://www.quartz-scheduler.net/

如果您在基于Windows的服务器上运行,则可以使用Revalee开源项目来解决此问题。 作为Windows服务运行的Revalee将所有计划的任务存储在一个持久数据存储区中(特别是可扩展存储引擎(ESE)[aka.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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM