2017-09-27 2 views
1

J'ai un WebJob qui reçoit des messages du bus Service qui fonctionne correctement. Si le webjob ne parvient pas à finir ou lance une exception le message est renvoyé dans la file d'attente ce qui est bien en soi.Message de requeue Azure WebJob Service Bus en face de la file d'attente en cas d'erreur

J'ai mis MaxDequeueCount à 10 et ce n'est pas un problème s'il échoue dans certains cas car il essayera de le traiter à nouveau. Mais le problème est que le message semble être envoyé au bas de la file d'attente et que les autres messages sont traités avant de revenir au premier échec.

Je voudrais traiter un message à la fois car je pourrais avoir plusieurs mises à jour sur la même entité à la suite. Si la commande change, cela mettrait à jour l'entité dans le mauvais ordre.

Est-il possible de renvoyer le message en-dessous de la file d'attente en cas d'erreur ou de continuer à travailler sur le même message jusqu'à atteindre le MaxDequeueCount?

Répondre

0

Idéalement, vous ne devriez pas vous fier à l'ordre des messages.

Compte tenu de vos besoins, vous pourriez potentiellement aller avec la sémantique FIFO de Azure Service Bus Sessions. Lorsqu'un message est traité dans une session et que le message est annulé, il sera traité à nouveau plutôt que d'aller à la fin de la file d'attente. Vous devez garder à l'esprit les éléments suivants:

  1. Ne peut traiter un message à la fois
  2. Nécessite session à utiliser
  3. Si le message n'est pas terminé et pas avorté, il sera laissé suspendu dans la file d'attente et sera ramassé quand une session est redémarrée.