2010-02-16 9 views
6

¿Cuál es la forma óptima de configurar/codificar NServiceBus para retrasar la reintentación de mensajes?NServiceBus Retraso de retardo

En su configuración predeterminada, el reintento se produce casi de inmediato hasta el número de intentos definidos en el archivo de configuración. Idealmente me gustaría volver a intentarlo después de una hora, etc.

Además, ¿cómo funciona HandleCurrentMessageLater()? ¿A qué se refiere el aspecto Later?

Respuesta

6

Los intentos de NSB resuelven problemas temporales como interbloqueos, etc. Reintentos más largos se solucionan mejor creando otro proceso que supervisa la cola de errores y los vuelve a poner en la cola de origen en el intervalo que desee. Eche un vistazo al ReturnToSourceQueue.exe que viene con NSB como referencia.

Editar: NServiceBus ahora es compatible con esto, lo llamamos Second Level Retries, ver http://docs.particular.net/ para más detalles

+0

Esta respuesta fue publicada hace algún tiempo ahora hay soporte NSB para esta construida en Ver la respuesta de @SDShooter para más detalles. –

4

Aquí es un blog sobre por qué NServiceBus no incluye un retardo de reintento que escribí después de pedir Udi esta misma pregunta distribuido en su curso de arquitectura de sistemas:

NServiceBus Retries: Why no back-off delay?

Y aquí es un hilo de discusión que cubre algunos de los puntos que intervienen en la construcción de un monitor de cola de errores/reintentar punto final:

http://tech.groups.yahoo.com/group/nservicebus/message/10964

En lo que HandleCurrentMessageLater(), lo único que hace es pone el mensaje actual de vuelta al final de la cola. Si no hay otros mensajes en espera, se procesará nuevamente de inmediato.

4

A partir de NServiceBus 3.2.1, proporcionan una solución lista para usar para manejar retrasos de retraso en el caso de fallas consecutivas de mensajes. El mecanismo de reintento previamente existente aún reintenta errores sin demora para manejar casos como interbloqueos de base de datos, problemas de red de autocuración rápida, etc.

Una vez que se ha reintentado el número configurado de veces, el mensaje se mueve a "Segundo Nivel Reintentar "cola". Esta cola, tal como se configura a continuación, volverá a intentarse después de un retraso de 10, 20 y 30 segundos, luego el mensaje se moverá a la cola de errores configurada. Puede cambiar estos valores a algo que mejor se adapte a su entorno.

También puede consultar este enlace:. http://docs.particular.net/nservicebus/second-level-retries