虽然这个问题是 Azure 特有的,但我确信这是云计算的常见情况。
我有一个需要在特定时间运行的任务列表。通过窗口服务器,我可以使用任务计划程序并安排我的程序在特定时间运行。我可以更进一步,创建一个 Windows 服务,该服务将按照给定的时间间隔运行,然后执行适当的任务。
有人对云计算环境的最佳方法有建议吗?
我可以创建一个辅助角色,每秒轮询任务列表,然后将适当的任务放入队列中,由另一个辅助角色处理。
我可以创建一个每天运行一次的辅助角色,获取所有任务并将它们提交到队列中。然后,处理器角色将从队列中拉出一个项目并在适当的时间进行处理。
还有其他建议吗?
最佳答案
您可以设置服务总线队列并将其用作调度程序。
通过设置 ScheduledEnqueueTimeUtc 将消息发送到队列中将消息发送到所需的时间,届时该消息将显示在队列中。在执行工作人员/网络角色中,您在该队列上设置一个接收器,一旦消息显示,即作业到期,它将立即获取作业。
这样做的好处是,您可以使用它来平衡多个实例之间的作业,并且由于计时器完全位于您的应用程序外部,因此您无需存储、恢复和管理它。 SB 会为您做这一切。
需要注意的是:SB 无法取消预定的消息。
关于Azure 任务计划程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/571439/