【发布时间】:2014-09-09 19:02:07
【问题描述】:
我有一个 azure 存储表,其中有一堆任务要由工作角色在特定时间完成。示例:
Task 1: -> run every 5 min
Task 2: -> run every 1 min
Task 3: -> run every 10 min
Task 4: -> run every 1 min
Task 5: -> run every 5 min
...........................
Task 1000: -> run every 1 min
这种方法是否正确: 每个任务都有一个名为“LastRun”的日期时间列。还有一个名为“RunEvery”的列存储必须执行任务的时间。辅助角色不断迭代所有任务,并为每个任务使用以下方法检查“LastRun”列:
DateTime currentTime = DateTime.Now;
if (currentTime >= (myTask.LastRun + myTask.RunEvery))
{
myTask.Execute()
}
else
{
Check.Next.Task.InTable();
}
如果 worker 角色连续运行,会消耗资源怎么办?我们如何才能获得资源?或者我可以以更好的方式实现这一点吗?你有什么建议?
【问题讨论】:
-
几天前我可能已经写了你要找的东西。它是一个依赖于 Azure Tables 的 c# 调度程序,专为低事务消耗(每 50 个计划任务 3 个表存储事务)而设计,可在多个角色实例的上下文中使用。计划任务是“事务性的”,这意味着您必须调用 .Handled();当任务完成时(否则它将在“x”小时后再次触发)。如果有兴趣,我还需要清理一下代码,然后我可以在github上发布。
-
绝对感兴趣!接缝有趣!请让我知道什么时候准备好!提前致谢!
-
我正在发布它。
-
@uzul 你能告诉我你什么时候发表这篇文章吗?我在哪里可以找到它……不胜感激!
标签: azure azure-storage azure-worker-roles