2010-11-22 54 views
2

J'ai une application utilisant NServiceBus pour traiter des messages, et pendant le débogage, je trouve que des exceptions peuvent être levées, et le message est perdu. J'ai vérifié les files d'attente principale et d'erreur, et le message n'a été tenté qu'une seule fois.Qu'est-ce qui pourrait empêcher NServiceBus de déplacer des messages vers la file d'erreurs s'il y a des exceptions lors du traitement?

Y a-t-il des pièges courants qui pourraient causer cela? J'utilise NServiceBus 2.0.0.1219 (2.0 RTM) sous Windows 7 64 bits. Autre question avec le même problème sur la version antérieure: What could prevent NServiceBus from moving messages to the error queue if there are exceptions when processing?

Le site Web Bus.Envoie une commande au point de terminaison du gestionnaire de commandes.

Site du fichier de configuration:

<MsmqTransportConfig InputQueue="WebAppTest_InputQueue" ErrorQueue="ErrorQueue" NumberOfWorkerThreads="1" MaxRetries="5"/> 

<UnicastBusConfig ForwardReceivedMessagesTo="AuditQueue"> 
    <MessageEndpointMappings> 
    <add Messages="ABC.ServiceBus.Commands" Endpoint="CommandProcessor_InputQueue"/> 
    </MessageEndpointMappings> 
</UnicastBusConfig> 

<DBSubscriptionStorageConfig> 
    ... 
</DBSubscriptionStorageConfig> 

gestionnaire de commandes du fichier de configuration:

<MsmqTransportConfig InputQueue="CommandProcessor_InputQueue" ErrorQueue="ErrorQueue" NumberOfWorkerThreads="1" MaxRetries="5" /> 

<UnicastBusConfig ForwardReceivedMessagesTo="AuditQueue"> 
    <MessageEndpointMappings> 
    <add Messages="ABC.ServiceBus.Commands" Endpoint="WebAppTest_InputQueue"/> 
    </MessageEndpointMappings> 
</UnicastBusConfig> 

<DBSubscriptionStorageConfig> 
    ... 
</DBSubscriptionStorageConfig> 
+0

Pouvez-vous inclure votre configuration administrative? Assurez-vous également que MSMQ/DTC est correctement installé pour NSB. Vous pouvez le confirmer en utilisant l'outil Runner dans le téléchargement (tools \ MsmqUtils). –

+0

MSMQ/DTC est installé correclty, merci pour le conseil. J'ai ajouté les sections de fichier de configuration pertinentes dans la question. – LucG

+0

Je me demande si cela a à voir avec le transfert de message. Cela arrive-t-il encore si vous supprimez le message "ForwardReceivedMessagesTo"? Je vais essayer de mettre en place un repro en attendant. –

Répondre

1

Depuis la transmission du message fait partie de la même transaction que la réception du message, si le recevoir échoue, le transfert échoue. Je pense que si une exception est levée, vous voulez probablement qu'il aille dans la file d'erreurs et non dans la file d'attente d'audit, car il n'a pas été reçu correctement. Si vous voulez voir tout ce qui circule sans souci, la journalisation pourrait être un meilleur pari.