2011-08-03 18 views
5

Tengo una aplicación NServiceBus de muestra para probar las aguas .. Todo va bien, el envío y la manipulación funcionan correctamente.Controlador de mensajes NServiceBus no va a la cola 'error' en la excepción

He lanzado deliberadamente una excepción dentro de un determinado manejador de mensajes para ver qué sucede, pero nada lo hace. La excepción se registra correctamente en la consola, pero el mensaje se saca de la cola y NO se coloca en la cola de errores como era de esperar. Además, el reintento de 5 veces tampoco ocurrió. ¿Es este comportamiento correcto?

Además, la cola se creó correctamente al inicio cuando se especificó por primera vez.

la configuración y el código de arranque para el servidor (donde reside el manejador están por debajo)

de configuración:

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

Program.cs:

var bus = NServiceBus.Configure.With() 
    .Log4Net() 
    .CastleWindsorBuilder(container) 
    .XmlSerializer() 
    .MsmqTransport() 
    .UnicastBus() 
    .LoadMessageHandlers() 
    .CreateBus() 
    .Start(); 

Me estoy perdiendo algo aquí?

Respuesta

5

he modificado el código de programa previo para incluir

.IsTransactional(true) 

en la configuración de bus y ahora se está trabajando! Parece que los mensajes no transaccionales son desechables. ¡Tiene sentido!

+0

Mi primer instinto fue decirle que haga las colas transaccionales. ¡Maldita sea! –

1

¿Está ejecutando Windows Server 2008? De ser así, encontrará un registro de eventos en el visor de eventos, debajo de los registros de eventos de la aplicación -> ventanas -> MSMQ - End2End. Esto registrará cada acción tomada por el subsistema MSMQ en su máquina.

Supongo que NSB ha intentado enviar el mensaje a la cola de errores. Sin embargo, lo que realmente está sucediendo es que el subsistema MSMQ en su máquina ha consumido el mensaje, pero no ha podido entregarlo en la cola de errores por algún motivo.

Me gustaría ver en el registro de MSMQ una idea de lo que está sucediendo.

+0

Estoy ejecutando Win7, sin embargo habilité registros en 'Logs de aplicaciones y servicios \ MSMQ \ End2End', que proporciona algunos datos interesantes, pero no lista la cola de errores. Muestra los registros para enviados/recibidos en SiteServer1, pero exactamente el mismo registro para un 'manejador' y manejador exitoso con la excepción –

Cuestiones relacionadas