Я читаю документацию, и следующее меня смущает, потому что в верхней части документа говорится, что с версией 5 мы получаем надежность без использования DTC.
Эта функция была реализована с использованием как шаблона исходящих сообщений, так и шаблона дедупликации. Когда сообщение удаляется из очереди, мы проверяем, не обрабатывали ли мы его ранее. Если это так, мы затем доставляем все сообщения в папку исходящих для этого сообщения, но не вызываем логику обработки сообщений снова. Если сообщение ранее не было обработано, мы вызываем обычную логику обработчика, сохраняя все исходящие сообщения в долговременном хранилище в той же транзакции, что и изменения в собственной базе данных пользователей. Наконец, мы отправляем все исходящие сообщения и обновляем хранилище дедупликации.
Я уверен, что это, вероятно, из-за моего непонимания, но разве тот факт, что NServiceBus открывает свое собственное соединение и транзакцию отдельно от обработчика сообщений (например, вызывая репозиторий для сохранения), соединение с базой данных, транзакция будет эскалирована до полный 2PC с использованием DTC?
Вот документация:
http://docs.particular.net/nservicebus/outbox/
Спасибо!