虽然这个问题特别适用于Azure,但我确信这是云计算的常见情况.
我有一个我需要在某个时间运行的任务列表.使用窗口的服务器,我可以使用任务计划程序并安排我的程序在特定时间运行.我可以更进一步,创建一个以给定间隔运行的Windows服务,然后执行适当的任务.
有没有人对云计算环境有最佳方法的建议?
我可以创建一个工作者角色,每秒轮询一次任务列表,然后将相应的任务抛出到由另一个工作者角色处理的队列中.
我可以创建一个每天运行一次的工作者角色,抓取所有任务并将它们提交到队列中.然后,处理器角色将一个项目从队列中拉出并在适当的时间处理.
还有其他建议吗?
您可以设置服务总线队列并将其用作调度程序.
通过将消息上的ScheduledEnqueueTimeUtc设置为所需的时间将消息发送到队列中,此时消息将显示在队列中.在执行工作人员/ Web角色中,您在该队列上设置了一个接收器,然后在消息显示后立即获取作业,即作业到期.
关于这一点的好处是,您可以使用它来平衡多个实例中的作业,并且由于计时器完全在您的应用程序外部,因此您无需存储和复活并管理它.SB为您做到了这一切.
一个警告:SB无法取消预定的消息.
现在有几个选项可以在Azure上执行此操作
Web作业(适用于Azure网站)
调度