【问题标题】:.Net scheduled tasker.Net 定时任务
【发布时间】:2015-03-11 06:33:58
【问题描述】:

我记得在一家公司工作,我们有一个计划任务经理。它是一个运行在多台机器上的 Windows 服务,在数据库中同步,我们用于运行离线批处理。

现在我发现自己不得不在目前的工作场所重新做这件事。您是否推荐了一个框架来快速开始我的开发?

约束:

  • 它应该可以轻松部署到多个环境中。例如:手动完成 Windows 计划任务部署很复杂。

  • 当同一任务已经在进行中时,它不应启动新任务。

  • 任务粉碎不会粉碎调度程序。

【问题讨论】:

  • 您尝试过 Windows 服务吗?
  • 是的,我正在寻找的解决方案可能是 Windows 服务。但是我不想花很多时间从头开始编写任务调度引擎。我更喜欢专注于任务本身。
  • 您尝试过 SQL Server 代理作业吗?
  • 考虑过了,但我不同意数据库机器将其 CPU 和内存用于 CLR 逻辑。
  • 具有特定业务的 C#/VB 代码直接从 MSSQL DB 运行。 (有时人们在 .Net 中编写对 SQL 脚本执行字符串操作的函数)

标签: .net scheduled-tasks


【解决方案1】:

我成功使用了Quartz .Net Scheduler。它最初是作为 Java Quartz Scheduler 的一个端口,并且是 activley 开发的。用它应该很容易满足您的要求。

其中包括作业持久性(通过 ADO.NET 作业存储 (AdoJobStore))细粒度作业调度和故障转移机制。

尝试阅读the tutorials,以先了解一下。

【讨论】:

    【解决方案2】:

    我很高兴看到您不想编写自己的调度程序。我已经看到它做了好几次,它总是变得过于复杂且难以维护(即技术债务)。

    我强烈推荐Hangfire

    Hangfire 被部署为 ASP.NET 应用程序,并且可以使用 Azure 来运行作业。它具有自动重试逻辑、错误报告和一个漂亮的仪表板,您可以使用它来配置任务并查看正在发生的事情。

    【讨论】:

      猜你喜欢
      • 2015-06-21
      • 2021-09-26
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 2014-04-14
      • 2020-03-31
      • 2023-03-27
      相关资源
      最近更新 更多