2012-01-08 9 views
6

Tenemos una aplicación .NET que se ejecuta en Windows Azure y utiliza NHibernate para conectarse a una base de datos SQL Azure. A veces es necesario añadir lógica de reintento para manejar fallos transitorios en SQL Azure como se describe, por ejemplo, aquí -¿Cómo agrego Retry Logic en NHibernate para manejar las fallas transitorias en SQL Azure?

http://social.technet.microsoft.com/wiki/contents/articles/retry-logic-for-transient-failures-in-sql-azure.aspx

Puede alguien que me señale un camino en hacer esto con NHibernate? Idealmente, me gustaría hacer esto en el nivel NHibernate y no envolver todas las llamadas; Yo era capaz de hacer esto para otro ORM, .netTiers (http://nettiers.com) como esbozo aquí -

http://blog.ehuna.org/2010/01/how_to_stop_getting_exceptions.html

Yo busco y encontró algunas respuestas que mencionan el uso de una implementación personalizada de la interfaz IDbCommand -

Intercept SQL statements containing parameter values generated by NHibernate

Pero no estoy seguro de si esto funciona con NHibernate 3.2 y estoy buscando un ejemplo claro que pueda modificar.

¿Cómo podría NHibernate volver a intentar llamadas a SQL Azure automáticamente? Digamos 3 reintentos, con 100ms de espera entre cada uno, después de los 3 reintentos, si sigue fallando, deberíamos lanzar la excepción.

Respuesta