NServiceBusでディストリビューターを使用していますが、DTCに関して無視の壁にぶつかりました。私は、プロセス間で何かを行うときにDTCを1回、おそらく2回しか使用していませんでした。そのため、DTCの概念全体に非常に慣れています。
Question:
To ensure durable messaging with NSB, is it absolutely necessary to use DTC's?
私が尋ねる理由は、NSBがハンドラーなどの例外を検出できることを期待しているため、キューからメッセージを削除しないことでエラーに対応できるからです。したがって、DTCは必要ありません。もちろん、これは、ハンドラー内のデータベースまたは外部サービスへのアクセスでは、プログラマーが自分自身のロールバックなどを実行する必要があることを意味します。そのため、DTCは最善の方法のようです。したがって、DTCは(私が正しく理解していれば)私の観点からすると、ハンドラーが正しく実装され、他の外部サービスがDTCに参加している限り、メッセージがキューから失われることはなく、メッセージ処理が破損することはありません。 。
しかし、特にサーバー保守チームで尊敬されている人が「DTCはあなたに苦痛の世界を引き起こすでしょう!」という文を使用したので、よくわかりません。私が彼によってデータベースサーバー上でDTCをアクティブ化するというアイデアを実行したとき...しかし、彼はまだDTCにそれほど苦痛を感じている理由について議論をしていません...:/。
DTCとNSBをよく理解している人が、DTCの理解が完全にずれているかどうか、およびDTCで完全に見逃している大きな落とし穴があるかどうかを明確にするのを手伝ってもらえますか?
敬具