Azure WebJobs Part 3 : Activer un Job avec un Blob

Dans cette troisième partie, nous allons voir comment lancer le traitement d’un job à partir d’un nouveau blob dans notre espace de stockage.

Le scénario est le suivant, j’ai un Web Role qui héberge une gateway. J’ai de nombreux logs IIS qui sont stockés dans des blobs et je voudrais pouvoir faire des requêtes sur les données. Pour cela, je dois d’abord lire les blobs et envoyer les lignes qu’il contient dans une table Azure sur laquelle je pourrais faire mes requêtes.

Le Logs IIS

Le fichier contenant le log IIS est un fichier de type CSV avec une description des champs et quelques commentaires sur les premières lignes, sa structure ressemble à celle ci:

image

Ce qui va se traduire dans une table par la classe WebLogEntry (toutes les scripts sont dans le gist en bas du post)

Création du Job

La méthode qui va être exécuté par le SDK va utiliser l’attribut [BlobTrigger(path)] permettant de scanner un path sur un espace de stockage azure et déclenchant la méthode à chaque nouvel élément détecté.

Le chemin d’accès path du blob est du type “container/{name}, ce qui nous permettra de récupérer la propriété name du blob dans une variable si nous avons besoin de l’utiliser.

Le code est le suivant :

public static void IISLogParserToTable([BlobTrigger(@"wad-iis-logfiles/{name}")] Stream input,string name,
[Table("wadiislogs")] ICollector<WebLogEntry> tableBinding){
...

}

Nous allons donc itérer sur chaque ligne du fichier, créer une entité de type WebLogEntry et l’ajouter à la collection tableBindings. Cette collection est décorée par l’attribut [Table(‘name’)] dans la signature de la méthode et va nous permettre à chaque utilisation de la fonction Add d’insérer une nouvelle ligne dans la table Azure.

Nous voyons ici que grace au SDK WebJob, le travail pour lire un Blob et effectué des insertions dans une table est énormément simplifié. Cela aurait été possible a développé dans un web role ou dans un programme console mais nous aurions été obligé de gérer les BlobClient et TableClient etc..

Ce type de traitement peut être utilisé pour insérer des dizaines de milliers de lignes sans aucune problème.

PS : le code du parser CSV est également disponible dans les sources du gist:

 

This entry was posted in Azure, Français and tagged , , . Bookmark the permalink.

One Response to Azure WebJobs Part 3 : Activer un Job avec un Blob

  1. Pingback: A la découverte des Windows Azure Web Jobs (Intro) | Jérémie – an other BizTalker

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s