hug*_*dan 5 c# scheduled-tasks azure
我有一个简单的Azure Worker角色运行,每隔几秒执行一次任务.下面是完成此任务的代码.
public override void Run()
{
try
{
while (true)
{
DoSomething();
System.Threading.Thread.Sleep(3000);
}
}
catch (Exception ex)
{
Log.Add(ex, true);
}
}
Run Code Online (Sandbox Code Playgroud)
我现在要做的是添加第二个任务DoSomethingElse(),它每天触发一次,每天只触发一次.我想到了几种方法来实现这个目标:
前两个解决方案让我觉得非常脆弱,没有额外的代码来处理服务停止和重新启动的情况.第三种解决方案让我感到有些过度杀伤.
我的问题是,在Azure工作者角色中以不同的时间间隔安排任务的最佳做法是什么?我有点偏爱直接使用.NET而不使用第三方库(虽然我不排除它).
注意,上面的#3来自这个较老的问题推荐一个C#任务调度库
前两个选项是最简单的,但它们很脆弱 - 特别是在角色可以回收/负载平衡等的云中......如果持久性位于内存中,甚至是基于云中的磁盘,那么它将很脆弱。
除了其他第三方选项之外,您还可以考虑将计划和执行数据持久保存到外部存储(表服务、sql azure 等)中。在定期计时器上,辅助角色可以查询要执行的作业,记录启动情况,然后运行作业。这还允许您潜在地扩展辅助角色的数量,因为它的持久性是外部的。
这可能会很快变得复杂,但如果你保持简单的频率和记录运行时间,它可能会相当简单。
| 归档时间: |
|
| 查看次数: |
2576 次 |
| 最近记录: |