NServiceBusが新しく、WCF/RPCソリューションにメッセージングを導入しようとしています。MSDTCが利用できないときにゲートウェイを使用してnservicebusを設定する方法
アーキテクチャ上の制約とオーバーヘッド(メモリとCPU使用率が既に高いため)により、IT運用ではMSDTCが許可されません。 (私はまた2PC fwiwを避けることに熱心です)。私はまた、HTTP経由でメッセージを要求するので、NSBブリッジは素晴らしいソリューションのように見えます。
これらの投稿(how-i-avoid-two-phase-commitおよびextending-nservicebus-avoiding-two-phase-commits)に基づいて、DTCが無効の状態でNSBを使用できるかのように見えます。 は、NSBをセットアップするのと同じ方法で2PCを回避することができますが、現時点では、NSBがイベントソーシングをミックスに追加するのではなく、機能するようにしたいと思っています。
質問:
- は、このように動作するようにNSBの設定のいずれかの例がありますか?余分な複雑さ(ローカルメッセージステートストレージを持つカスタムメッセージハンドラ)を追加することはとても嬉しいです.2PCなしでは本当に別のオプションはありません。私はすでにこの例(IdempotentConsumer)を知っていますが、このレポのテストプロジェクトにはコードは含まれていません。 nosqlストレージを使用した例があればさらに役立ちます。
- DTCを処理するためにNSBブリッジを変更する必要がありますか?私はno-bridgeトランザクションがローカルキューに対してのみであると推測していますが、ローカルキューを消費するプロセスは明らかに2PCを避けるためにコード化する必要があります。正しい?
- NSDをMSDTCなしで使用している他の有用なリソースや記事はありますか?解決策(how-i-avoid-two-phase-commit)はそれほど複雑ではないようですが、私はNSBから始めました。このためのクイックスタートを見つけるのは素晴らしいことでしょう。
- これは一般的なシナリオだと思っていましたが、 NSBを使用している間にMSDTCを回避することについて多くのことが書かれているようです。確かに、メッセージバスを使用しているがMSDTCの使用を許可されていない他の人がいる...私が逃した別の明らかな方法はありますか?
おかげ
Rant ahead: "メモリとCPU使用率がすでに高いIT運用ではMSDTCが許可されていません"。 ITオペレーションとDBAがソフトウェアの構築方法や最終的なコストに根本的な影響を及ぼす可能性のある決定をどのようにして行うことが常に面白いのか。 ESとそのすべてが悪いと言っているのではなく、まったく逆ですが、ビジネスがそれを必要とし、IT運用者の誰かがメモリが高価だと思っているためではないため、使用する必要があります。信頼の私devの時間は、メモリやCPUよりも高価です。 –
はい、私はdevの時間がハードウェアよりも高価であることをよく知っています。私はMSDTCからの脱却はすべて悪いとは考えていません。これは、どの永続性ストアでも処理できるかどうかは少し制限されています。だから私は、NSD(フォーラムなど)の周りにもっと話があったようには思えないのですが、MSDTCの厳しい要件を取り除くことについては驚いています(NSBにはjonathan oliver記載されている)。それにもかかわらず、MSDTCは私が処理した制約ではありません。だから私は本当にそれを回避する方法の例を見たいと思っています。 – Justin
私はそれをnsbの「難しい」要件とは言いません。 configure.IsTransactional(false)を呼び出すことでオフにすることができます。基本的にコードが必要になるので、私たちがさらに助けることはあまりありません。しかし、もちろん、ESはそれをもっと簡単にします。 –