【发布时间】:2020-01-29 20:53:43
【问题描述】:
我正在考虑使用 Hangfire https://www.hangfire.io 来替换旧的本土调度 ASP.NET 网站/应用程序。
我使用 Hangfire 创建了一个简单的测试项目。我可以使用 Hangfire 启动项目,提交(在代码中)几个非常简单的单个重复任务,查看仪表板等。
我正在寻找更多建议,以便为要安排的任务创建更复杂的代码(和类),并且我有一个问题,即在将 Hangfire 网站重新发布到生产环境时,永久安排的任务会发生什么。
我已经阅读了 Hangfire 网站上的一些文档,查看了 2 个教程,浏览了 Hangfire 论坛,并在 StackOverflow 和网络上进行了一些搜索。我所看到的很多内容都向您展示了如何安排一些非常简单的事情(例如 Console.WriteLine),但没有更复杂的事情。 “Highlighter”教程很有用,但它本质上展示了如何安排一个(运行时间稍长的)任务的单个实例来响应交互式用户输入。我知道这有多么有用,但我对提交然后每天(或每小时等)运行并且不需要再次提交的重复任务更感兴趣。这些任务可能是诸如每晚向用户发送一批电子邮件、批量处理一些数据、导入外部数据的夜间提要、定期调用 Web 服务以执行一些处理等。
是否有任何可用的示例代码显示此类示例,或任何有关在接口和类中构建此类代码的最合适方法的指导?
其次,就我而言,大多数任务都是“永久性的”(始终作为重复任务存在)。如果我在生产中启动 Hangfire 应用程序后不久设置代码以将这些添加为重复任务,那么在将更新发布到生产时我应该如何处理它(当相同的初始化将再次运行时)?我应该用相同的 ID 调用“AddOrUpdate”,Hangfire 会处理它吗?我应该先调用“RemoveIfExists”然后再次添加重复任务吗?是否应该使用其他方法?
【问题讨论】:
-
我不明白你为什么想要这个示例代码。如果您在运行复杂任务时遇到问题,请创建minimal reproducible example 并在此处发布。 Stack Overflow 不是在这里为您找到示例代码。至于您的其他问题 - 您可以自己尝试以了解如何产生您想要的行为。