4

我想在我的 Windows azure 应用程序中实现一个作业调度程序。

我的目标是在每天的特定时间执行特定的应用程序。对于那个实现,我有一些选择

1-使用 Quartz.net

2-Windows 调度程序

如果 C#.net 中有任何可用的内置方法来实现它。我很难理解 Windows Azure HPC 调度程序。是调度程序吗?

4

4 回答 4

6

作业调度程序功能最近添加到 Windows Azure 中,允许您轻松地按特定时间间隔安排作业:

在此处输入图像描述

这是一篇博客文章,解释了如何使用这些作业与网站、Web 角色甚至 Worker 角色进行通信:http: //fabriccontroller.net/blog/posts/job-scheduling-in-windows-azure/

于 2012-12-28T10:12:36.167 回答
4

当您在 Windows Azure 中进行调度时,您需要牢记一些事情。您可以拥有多个 Web/Worker 角色实例,这意味着您必须考虑到您的计划任务可能会运行多次,而这可能不是您想要的。

您可以考虑使用服务总线队列创建调度系统。BrokeredMessage类有一个有趣的属性,称为ScheduledEnqueueTimeUtc,允许您安排消息何时应入队(可用)。例如,这将允许用每小时显示的消息填充队列。

http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx

如果您决定使用服务总线队列构建这样的实现,您可以决定最多处理一次消息(ReceiveAndDelete)或至少一次(PeekLock)。

于 2012-06-14T08:28:53.780 回答
2

虽然之前已经多次回答了日程安排(这就是为什么我建议这是重复的),但我意识到您问了一些尚未解决的具体问题:

  • HPC 调度程序用于 HPC 工作负载,不适合您作为一般任务调度程序的用途。
  • 通过 c# 没有特定的任务调度程序=您需要编写一个或使用诸如石英之类的库。
  • 请记住,Web 和辅助角色基本上是 Windows 2008 Server VM。无论您在 Windows Server 中可以做什么,您都可以在 Windows Azure VM 中进行几乎相同的操作。

请查看我提到的另一个答案,因为我在那里提供了一个答案,为您提供了有关创建调度程序的详细信息。

于 2012-06-14T07:54:34.920 回答
0

如果您使用 ScheduledEnqueueTimeUtc 属性来延迟消息排队,我想知道消息在发送到队列之前存放在哪里?因为如果您有 2 个 Web/Worker 角色实例,会发生什么?

  • 您创建消息并将其中一个实例存储在一种缓存中?或者是缓存它的两个实例?

两种情况: 1. - InstanceA 将消息存储在其缓存中,等待将其传递到队列 - InstanceA 因任何原因失败。- 消息永远丢失。

    • 两个实例都有库存。
    • 实例 A 和 B 已启用。消息在队列中被传递两次。

在这两种情况下,似乎解决方案都不可靠..

于 2013-10-17T09:12:04.257 回答