Как добавить Retry Logic в NHibernate для обработки временных сбоев в SQL Azure? - PullRequest
7 голосов
/ 08 января 2012

У нас есть приложение .NET, которое работает в Windows Azure и использует NHibernate для подключения к базе данных SQL Azure.Иногда необходимо добавить логику повторных попыток для обработки временных сбоев в SQL Azure, как описано, например, здесь -

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

Может кто-нибудь указать мне способ сделать это с NHibernate?В идеале я хотел бы сделать это на уровне NHibernate, а не оборачивать каждый вызов;Я смог сделать это для другого ORM, .netTiers (http://nettiers.com), как я обрисовал здесь в общих чертах -

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

Я выполнил поиск и нашел несколько ответов, в которых упоминается использованиепользовательская реализация интерфейса IDbCommand -

Перехватывать операторы SQL, содержащие значения параметров, сгенерированные NHibernate

Но я не уверен, что это работает с NHibernate 3.2, и я ищудля ясного примера, который я мог бы изменить.

Как я могу автоматически выполнять вызовы повторных попыток NHibernate для SQL Azure? Скажем, 3 повторения с ожиданием 100 мс между каждым - после 3 повторных попыток, если по-прежнему происходит сбой, мы должны выброситьисключение.

Ответы [ 3 ]

4 голосов
/ 19 августа 2012

Я выпустил библиотеку, которая позаботится об этом:

https://github.com/robdmoore/NHibernate.SqlAzure

3 голосов
/ 23 мая 2012

Это не полный запущенный пример, но необходимые вам файлы находятся здесь

https://github.com/craigvn/NHibernateRetryable

1 голос
/ 17 февраля 2012

Может быть, это поможет вам: http://www.objectreference.net/post/NHibernate-and-Execution-Plans.aspx. Здесь есть класс, который вы можете скачать и поиграть с ним, с некоторыми переопределениями.

Также проверьте эту ссылку: http://elliottjorgensen.com/nhibernate-api-ref/NHibernate.Driver/SqlClientDriver.html

Надеюсь, это поможет в любом случае, я прохожу через аналогичную ситуацию.

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...