Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Long running (or forever) task on Windows Azure

I need to write some data to database every 50 seconds or so. It's similar to a Windows service that's running on background and silently doing its job. Starting and stopping is not an option in my case as I need a small amount of previously inserted data to be stored in memory. What's the best solution for this when using Windows Azure or AWS?

Thank you.

like image 903
wilkexx Avatar asked Jun 27 '12 22:06

wilkexx


2 Answers

With Windows Azure, you can choose either a Web or Worker role (both basically Windows 2008 Server R2 or SP2) and have some type of timed event, as @Lucifure suggested. You could also run a scheduler, like Quartz.net, or take advantage of windows Azure queues or service bus queues to have messages show up at a certain time. However: You cannot have a "forever" task in a given role instance, in that periodically your VM instances will be rebooted (e.g. for host OS maintenance every month). With role shutdowns, you'll get notice, which you can handle these shutdown notices in Stopping() or OnStop(). If you have multiple instances, you can use a scheduler or queue to ensure your events still trigger every 50 seconds or so, and get handled across multiple instances (but only by one instance at any given time).

To preserve your in-memory information, one idea is to store that information in a cache. You have 2 choices:

  • Distributed (shared) cache service, which has been around for some time now. It runs independently of your role instances.
  • In-memory cache, just introduced in June 2012. Assuming you have more than one instance, the cache is spread across those instances. You can even run the cache inside of memory of your existing roles.

More information on caching is here.

There are a few StackOverflow answers regarding Quartz.net and Windows Azure, such as this one.

like image 197
David Makogon Avatar answered Oct 03 '22 17:10

David Makogon


On Windows Azure, you can use a Worker Role, which can do this. It can be simple as a while loop.

Try this article for an introduction. http://www.c-sharpcorner.com/uploadfile/40e97e/windows-azu-creating-and-deploying-worker-role/

like image 25
Madushan Avatar answered Oct 03 '22 19:10

Madushan