Integrar WebJob con Azure Service Bus
Una vez tengamos creado un proyecto de tipo WebJob de Azure, encontraremos en el proyecto dos clases, “Program.cs” y “Functions.cs”.
Es en la clase “Functions.cs” donde se va a realizar la integración con nuestro Azure Service Bus.
Tan sólo tendremos que definir los siguientes parámetros en el método “ProcessQueueMessage”:
public static void ProcessQueueMessage([ServiceBusTrigger("topic", "subscription")] BrokeredMessage message, TextWriter logger) {}
El primer parámetro “ServiceBusTrigger” define el topic y el segundo el subscriptor que estará escuchando al service bus.
Como os podéis imaginar en el parámetro "message" tendremos el mensaje que nos envía el Azure Service Bus y que según lo hayamos compuesto, tendrá un formato u otro.
La propiedad "message" tiene un método "GetBody()" el cual contiene el objeto serializado que envía el service bus y a parte podemos recorrer la propiedad "Properties" que es un diccionario donde podemos almacenar información adicional.
var fullNameTypeEvent = message.Properties["TypeEvent"].ToString(); var serializedEvent = message.GetBody();
Sólo nos quedará definir en el app.config o web.config las credenciales de acceso al Azure Service Bus, y las conexiones al Dashboard y Storage con las que el WebJob trabaja.
<connectionStrings> <!-- The format of the connection string is "DefaultEndpointsProtocol=https;AccountName=NAME;AccountKey=KEY" --> <!-- For local execution, the value can be set either in this config file or through environment variables --> <add name="AzureWebJobsDashboard" connectionString="XXX" /> <add name="AzureWebJobsStorage" connectionString="XXX" /> <add name="AzureWebJobsServiceBus" connectionString="XXX" /> </connectionStrings>
De esta forma, cuando al Azure Service Bus le llegue un mensaje, automáticamente el WebJob lo procesará, es decir, reaccionará al evento.















