Azure WebJobs: ¿puedo usar métodos asincrónicos?
Me preguntaba si el SDK de Azure WebJobs puede activar métodos asincrónicos. Actualmente tengo un método similar al siguiente:
class Program
{
static void Main(string[] args)
{
var host = new JobHost();
host.RunAndBlock();
}
public static void ProcessStuff([QueueInput("myqueue")] string msg)
{
var tsk = ProcessStuffAsync(msg)
.ContinueWith(x => HandleAsyncError(x),
TaskContinuationOptions.OnlyOnFaulted);
tsk.Wait();
}
public static async Task ProcessStuffAsync(string msg)
{
// do some async stuff and await it
}
// other methods ...
}
Sin embargo, me preguntaba si podría hacer que JobHost supiera llamar a mi método asíncrono. No hay una gran cantidad de documentación sobre cómo tratar de usar async / await en WebJobs, y sería realmente bueno si pudiera.
Estoy tratando de ejecutar esto localmente para probar ... pero el SDK de WebJobs no es compatible con el emulador de almacenamiento local ...
ACTUALIZACIÓN 7/7/2014: la respuesta de Victor es correcta, pero quería mostrar lo que verá al usar métodos asíncronos en un WebJob (funcionan).
Para un método en su WebJob que se parece a lo siguiente:
public async static Task ProcessMessageAsync([QueueInput("testq2")] string message)
{
await Task.Delay(50);
Console.WriteLine("Processing Message Async...");
Console.WriteLine(message);
}
Verá el siguiente resultado en su registro de WebJobs:
running in pid: 6272
Timestamp:4:36:02 PM
Parameters bound. Invoking user function.
--------
Warning: This asynchronous method will be run synchronously.
Processing Message Async...
a test message
--------
Success