2015-09-24 1 views
0

J'utilise Azure Storage Queues pour gérer le flux de traitement de mes éléments. Tâches entrent dans la file d'attente, En cours de traitement par le serveur d'arrière-plan et retiré de la file d'attente.CloudQueueMessage - mécanisme de réessai

Dans certains cas, le traitement d'une tâche échoue (en raison de variables d'environnement inattendues). Dans ce cas, je souhaite réessayer l'exécution de la tâche. Si cette fois le traitement s'est bien passé, tout est bon - il suffit de le retirer de la file d'attente. Sinon, retirez-le de la file d'attente et écrivez un message dans le journal. Donc, je cherche un mécanisme pour ajouter des méta-données à l'élément CloudQueueMessage. Je pense à une nouvelle méta-donnée appelée "retries". Ce qui sera un compteur. Mais je ne vois aucune option pour ajouter des méta-données à un élément de file d'attente.

Une autre option consiste à envelopper mon élément avec la classe Wrapper qui ajoutera la propriété 'retries'. Après avoir mis en file d'attente l'élément de la file d'attente, réinsérez-le avec la valeur 'retries' modifiée. Cela devrait fonctionner mais pas une solution élégante.

Quelles sont vos recommandations?

+0

Cela peut être utile: https://msdn.microsoft.com/fr-fr/library/dn589788.aspx – brykneval

Répondre

2

Vous ne devez pas. Lorsque l'élément a été récupéré par votre rôle de travail dans la file d'attente, il est toujours présent mais marqué comme non visible. Par défaut, il est invisible pendant 30 secondes. Vous pouvez cependant définir la visibilité en utilisant "visibilityTimeout". L'élément reste dans la file d'attente jusqu'à ce que vous l'enleviez.

+0

C'est une bonne approche. Mais, comment puis-je être sûr que c'est la deuxième fois que je gère cet élément spécifique? Sachez qu'après le deuxième essai, je veux le retirer de la file d'attente. Sinon, ce sera boucle infinie. – No1Lives4Ever

+1

J'ai trouvé la solution. Je peux utiliser le "Message.DequeueCount" pour comprendre combien de fois ce message a été retiré. Merci beaucoup. – No1Lives4Ever