1

私はドキュメントを読んでいますが、バージョン 5 のドキュメントの上部に、DTC を使用せずに信頼性が得られると記載されているため、次の内容で混乱します。

これらの機能は、Outbox パターンと Deduplication パターンの両方を使用して実装されています。メッセージがデキューされると、以前にそれを処理したかどうかを確認します。その場合、そのメッセージの送信ボックスにメッセージを配信しますが、メッセージ処理ロジックを再度呼び出すことはありません。メッセージが以前に処理されていない場合は、通常のハンドラー ロジックを呼び出して、ユーザー自身のデータベースの変更と同じトランザクションで、すべての送信メッセージを永続的なストレージに格納します。最後に、すべての発信メッセージを送信し、重複排除ストレージを更新します。

おそらく私の理解不足によるものだと思いますが、NServiceBusがメッセージハンドラーとは別の独自の接続とトランザクションを開いているという事実はそうではありません(例:保存のためにリポジトリを呼び出す)データベース接続はトランザクションにエスカレートされますDTCを使ってフル2PC?

ドキュメントは次のとおりです。

http://docs.particular.net/nservicebus/outbox/

ありがとう!

4

1 に答える 1

1

はい、そうです。そのため、代わりにそれらをあなたと共有します。

NServiceBus はこれらをメッセージ ハンドラで公開するので、再利用してエスカレーションを回避できます。

メッセージ ハンドラー コンストラクターで依存関係を取得するだけで、正しいandNHibernateStorageContext にアクセスできます。NHibernate.ISessionNHibernate.ITransaction

于 2015-05-10T17:11:14.017 に答える