Met Windows Azure WebJobs kan je makkelijk je console apps als achtergrond proces draaien. Je kan gewoon een normaal console app uploaden, maar je kan ook het WebJobs SDK NuGet package installeren om automatisch queue's en blobs uit te lezen.

Een console appje dat een queue uitleest en de waarde daarvan naar een blob schrijft ziet er dan zo uit:

public static void ProcessQueueMessage([QueueInput] string inputText, [BlobOutput("containername/blobname")]TextWriter writer)
{
writer.WriteLine(inputText);
}

Super simpel. Wat ook heel fijn is, is dat je er gratis een mooi overzichtje bij krijgt van wat al je jobs hebben gedaan:


Daar kan je weer op doorklikken om de details van elk queue bericht te zien.

Het deployen van WebJobs is nog een beetje brak. Deployen kan door het uploaden van een zipje (kan ook via een rest api). Niet heel fijn.

Er is een Visual Studio extensie die een webjob tegelijk met je website kan deployen, maar die nam bij mij niet alle DLLs mee.
WebJobsVS Extension

Ander punt om rekening mee te houden is dat je webjob op dezelfde server(s) draait als je website en die kunnen elkaar in de weg gaan zitten. Als je webjob 100% CPU pakt, hebben je website bezoekers er last van. Met autoscaling komt er dan nog een server bij, maar daar kan ook die webjob op draaien die weer 100% CPU gaat pakken, etc.

Een CPU intensief proces, zoals het inlezen van een externe datasource en processen daarvan lijkt me dus niet handig om in een WebJob te doen, daar kan je beter Worker Roles voor gebruiken. Maar bijvoorbeeld e-mails versturen vanuit een queue zou wel goed kunnen.

Meer info:
http://blogs.msdn.com/b/jmstall/archive/2014/01/24/webjobs-sdk.aspx
http://www.asp.net/aspnet/overview/developing-apps-with-windows-azure/getting-started-with-windows-azure-webjobs