Краткий обзор нашей топологии:
Веб-сайты, отправляющие команды на сервер nServiceBus, который принимает команды и затем публикует правильные события pub / sub.Эта служба также имеет обработчики сообщений, которые могут выполнять некоторые действия с БД в ответ на команду, например:
1 пользователь регистрируется на веб-сайте 2. Веб-сайт отправляет команду nServicebus службе nServicebus на другом сервере.3 Сервер nServicebus имеет обработчик для этого конкретного типа команды, который записывает что-то в базу данных и отправляет приветственное письмо
. С момента создания этой архитектуры мы начали получать взаимные блокировки в БД.Я проследил это до MSDTC на сервере базы данных.Если я отключу эту службу на сервере базы данных, nServicebus начнет выдавать ошибки, которые, как мне кажется, показывают, что nServiceBus запрашивает обновление БД в транзакции.
Я не хочу, чтобы это произошло, я хочуобрабатывать БД самостоятельно, я хочу, чтобы транзакция доставляла сообщение моей прокси-службе nServicebus.Я не хочу транзакции из Интернета через 2 сервера в БД и обратно.
Есть предложения?
РЕДАКТИРОВАТЬ: этот пост дает некоторые подсказки, однако я неполностью уверен, что это правильный путь для продолжения .. NServiceBus - проблема с использованием TransactionScopeOption.Suppress в обработчике сообщений
EDIT2: причина, по которой мы хотим, чтобы БД работала вне области транзакции, заключается вчто цель состоит в том, чтобы «асинхронно» обрабатывать эти команды на другом сервере, чтобы не замедлять работу веб-сайта и / или не заставлять пользователей ждать этих длительных команд агрегирования.Если БД находится в рамках транзакции, блокирует ли это выполнение на веб-сайте в момент, когда исходная команда запускается для дистрибьютора?Есть ли лучшая архитектура nServicebus для этого сценария?Мы хотим, чтобы команда запускалась быстро и возвращала управление на веб-сайт, чтобы пользователь мог быстро продолжить работу, и нам не пришлось ждать нашей долго работающей команды БД, которая обновляет совокупные значения и отправляет электронные письма и т. Д.