2012-03-19 7 views
1

私は現在、マシン間で多くの同期通信を行うレガシーアプリケーションに取り組んでいます。コミュニケーションは主にHttp投稿によって行われ、NServiceBusを使ってコミュニケーションを非同期化することで利益が得られるのかどうか疑問に思っていました。NServiceBusは私たちのアプリにとって正しい選択ですか?

CQRSを通じて、私はNServiceBusを認識しましたが、詳細には見ていません。

アプリを書いた同僚と話すと、コールができないかのように見えて、トランザクション全体が失敗し、このモデルに固執する必要があります。ほとんどの通信では、複数のユーザーがサーバー上にハードウェアを構成しています。この場合、何らかの種類のキューイング/非同期フレームワークは必要ありません。

これで、非同期化のメリットがあり、NServiceBusが正しいフレームワークになると思いますか?私たちの場合には、asnycメッセージングアーキテクチャーは道のりであると彼らに納得させることができますか?あるいは、必要ではないフレームワークを導入していますか?

+1

POSTが失敗した場合はどうなりますか?あなたはそれを回避するために何をしていますか? –

+0

この段階ではまったく、または何もしないので、トランザクション全体がロールバックされます。 –

+0

再試行は手動であると仮定します。手動の介入があり、再試行の前にリサーチが必要な場合は、メッセージングの追加が役立つかどうかわかりません。 –

答えて

3

まあ、 "それが壊れていないなら"という古い格言がここに現れます。

しかし、真剣に、何かを修正する理由がない場合(可用性/データ損失の問題など)、それを変更するための議論を構築することは非常に難しいです。

私の経験では少し質問に答えるために、NServiceBusの主な利点の1つは所有コストが安いことです。それは、ピックアップ、学習、配備が容易で、一度生産に入ると管理オーバーヘッドはほとんどありません。

UPDATE

RE:それはあなたがそれを再生する方法に依存し

:ユーザーへの呼び出しの結果の表示についてのコメント。

CQRSパターンでは、この状況で成功メッセージを表示するのが一般的です。なぜなら、ユーザーがコールの結果を確認して結果が期待どおりにならないことはほとんどないからです。

しかし、呼び出しに遅延が発生する可能性のある重大な処理が行われた場合や、呼び出しが「自然に」失敗する可能性が高い場合は、ユーザーに「あなたの要求に感謝」メッセージを表示することを選択できますオフラインの手段(応答へのリンクが付いた電子メールなど)でコールアウトカムに警告します。

非同期になると、要求の99%が1秒以内に処理されるように指定し、その要件に合わせて設計とインフラストラクチャを計画できるなど、サービスレベル契約について別の方法で考える必要があります。

+0

おかげさまで、私たちのアプリでNServiceBusが必要かどうかを確認し、何かメリットがあるかどうかを確認するためのフィードバックを得ようとしました。 –

+0

NServiceBusはほぼ確実にすべての要件を満たし、無料で多くのメリットを提供します。主なメリットの1つは、これが処理されるたびにすべての障害処理コードを削除できるので、コードが大幅にシンプルになります。 –

+0

ありがとうございます。もし私がNServiceBus(moのための格言を無視して)に行き、何かが失敗した場合、私のイベントストア(私はJ OliverのEvent sourcingライブラリを使用しています)は更新されましたが、他のマシンへの呼び出しに失敗しましたか? –

関連する問題