2017-09-17 3 views
0

J'essaie de gérer mon message empoisonnement par elle ne frappe pas ma méthode de poison. Je suivais this article from Microsoft et voici mon code:webjob message empoisonnement pour servicebuss (type file d'attente)

public static void ProcessQueueMessage([ServiceBusTrigger("emailqueue")] EmailModels.EmailSendModel message, TextWriter log,[SendGrid()] out Mail mail) 
    { 
     log.WriteLine(message); 
     mail = new Mail(){Subject = message.Title}; 
     mail.From = new Email("[email protected]"); 
     mail.AddPersonalization(new Personalization() 
     {Tos= message.To.Select(t=>new Email (t.Email)).ToList()}); 
     mail.AddContent(new Content("text/plain", $"The message {message.Body}' was successfully processed.")); 
    } 

    public static void ProcessPoisonMessage([ServiceBusTrigger("emailqueue-poison")] EmailModels.EmailSendModel message, TextWriter logger) 
    { 
     logger.WriteLine($"start poisoning"); 
     logger.WriteLine($"Poisoning message for proposal id {message.ProposalId} for list {JsonConvert.SerializeObject(message.To)}"); 
    } 

La méthode d'envoi est frappé 5 fois et échoue (intentionnellement) mais l'empoisonnement ne pas être touché et mon message se retrouve dans la lettre morte messages sans aucune action: |

Qu'est-ce que je fais mal?

enter image description here

Répondre

1

L'article que vous citez est décrit Azure Storage Queues, pas le Service Bus. Ce sont des services distincts, et le traitement des messages empoisonnés est très différent.

Essayez de sélectionner votre déclencheur avec

[ServiceBusTrigger("emailqueue/$DeadLetterQueue")] 
+0

Merci pour la réponse. Alors, comment empoisonner les messages? J'ai Microsoft.Azure.ServiceBus v.1.0.0 installé –

+0

Mec! tu as sauvé ma journée! Merci beaucoup! –