Насколько я понимаю, при использовании NServiceBus у нас есть два типа исключений.
Окружающая среда: это означает, что любой требуемый компонент в настоящее время недоступен. Обычно приводит к полному откату транзакции. Это описание, которое я вижу за откатом в документации NServiceBus (включая возвращение сообщения на шину - что звучит фантастически). Как мне это сделать?
Проверка: обрабатывается сообщение, которое не может быть успешным из-за бизнес-логики, правил и т. Д. Где я хочу откатить все взаимодействия с базой данных, но нет смысла держать команду в очереди. В этом случае я просто хочу откатить часть транзакции NHibernate, а не часть MSMQ. Как мне это сделать? Обычно я выполняю проверку до того, как будет обработано какое-либо отдельное сообщение, но когда у вас есть несколько сообщений, связанных вместе в одну транзакцию, и вы хотите откатить их все обратно, это невозможно с помощью предварительной проверки.
Мое предположение состоит в том, что либо ответ безумно очевиден, и я его упустил, либо то, что я пытаюсь сделать, невозможно (в отношении исключения Validation).