Windows Azure上的长时间运行(或永久)任务

Windows Azure上的长时间运行(或永久)任务,azure,amazon-web-services,cloud,background-process,long-running-processes,Azure,Amazon Web Services,Cloud,Background Process,Long Running Processes,我需要每隔50秒左右向数据库写入一些数据。它类似于在后台运行的Windows服务,并以静默方式完成其工作。在我的情况下,启动和停止不是一个选项,因为我需要将以前插入的少量数据存储在内存中。使用Windows Azure或AWS时,解决此问题的最佳解决方案是什么 谢谢。在Windows Azure上,您可以使用工作者角色来完成此任务。它可以是一个简单的while循环 尝试这篇文章作为介绍。 您可以将System.Threading.Timer设置为每50秒左右启动一次,并在事件发生时执行您的工作。

我需要每隔50秒左右向数据库写入一些数据。它类似于在后台运行的Windows服务,并以静默方式完成其工作。在我的情况下,启动和停止不是一个选项,因为我需要将以前插入的少量数据存储在内存中。使用Windows Azure或AWS时,解决此问题的最佳解决方案是什么


谢谢。

在Windows Azure上,您可以使用工作者角色来完成此任务。它可以是一个简单的while循环

尝试这篇文章作为介绍。

您可以将System.Threading.Timer设置为每50秒左右启动一次,并在事件发生时执行您的工作。

对于Windows Azure,您可以选择Web或工作者角色(基本上都是Windows 2008 Server R2或SP2),并按照@Lucifure的建议,选择某种类型的定时事件。您还可以运行一个调度程序,如Quartz.net,或利用windows Azure队列或服务总线队列在特定时间显示消息。但是:在给定的角色实例中不能有“永久”任务,因为您的VM实例将定期重新启动(例如,每月进行主机操作系统维护)。通过角色关闭,您将得到通知,您可以在
Stopping()
OnStop()
中处理这些关闭通知。如果您有多个实例,则可以使用调度程序或队列来确保事件仍然每隔50秒左右触发一次,并跨多个实例进行处理(但在任何给定时间仅由一个实例进行处理)

为了保存内存中的信息,一种方法是将该信息存储在缓存中。您有两种选择:

  • 分布式(共享)缓存服务,已经存在一段时间了。它独立于角色实例运行
  • 内存缓存,2012年6月刚刚推出。假设您有多个实例,缓存将分布在这些实例上。您甚至可以在现有角色的内存中运行缓存
有关缓存的更多信息,请参阅

关于Quartz.net和Windows Azure,有一些StackOverflow答案,例如