Я использую дистрибьютора в NServiceBus, и я наткнулся на стену игнорирования кодов неисправности. Раньше я использовал DTC только один раз, может быть, дважды, когда делал что-то в разных процессах, и не так много, поэтому я очень новичок со всей концепцией DTC.
Question:
To ensure durable messaging with NSB, is it absolutely necessary to use DTC's?
Причина, по которой я спрашиваю, заключается в том, что я ожидаю, что NSB сможет обнаружить любое исключение, скажем, в обработчике, и, следовательно, отреагировать на ошибку, не удаляя сообщение из очереди. Следовательно, нет необходимости в DTC. Это, конечно, означает, что любой доступ к базе данных или внешней службе в обработчике потребует от программиста выполнения собственных откатов и т. д. И по этой причине DTC кажется лучшим способом. Итак, я полностью за DTC (если я правильно их понимаю), поскольку они, с моей точки зрения, гарантируют, что сообщения никогда не будут потеряны из очередей, а обработка сообщений никогда не будет повреждена, если обработчики реализованы правильно и другие внешние службы участвуют в DTC. .
Но я не уверен, тем более, что уважаемый парень из группы обслуживания серверов использовал предложение "DTC причинит вам мир боли!", когда я предложил активировать DTC на сервере базы данных с помощью его... Но ему еще предстоит прийти с аргументом относительно того, почему я так мучаюсь с кодами неисправности... :/.
Может ли кто-нибудь хорошо разбираться в DTC и NSB, пожалуйста, помогите мне прояснить, полностью ли я ошибаюсь в своем понимании DTC и есть ли какая-то большая ловушка, которую я полностью пропустил с DTC?
С уважением