4

NServiceBusをエンタープライズサービスバスとして使用しています。開発中のソリューションには、すべてのクライアントアプリケーションから最大10,000件のメッセージを受信するオーケストレーションサービスがあります。アーキテクチャのパフォーマンスを改善し、その結果、提供されるソリューションを強化したいと思います。

Saga Dataクラスを使用していて、すべてのワーカースレッド間でアクセスを共有したい(これまでは1つのスレッドに設定しましたが、少なくとも10に設定したい)。複数のスレッドがアクセスしようとするとどうなりますか。同じ佐賀のスタンス?NSBはすでにそのような同時実行機能を提供していますか?自分で実装する必要がありますか?後者の場合、何かヒントはありますか?

前もって感謝します

4

2 に答える 2

6

私があなたを正しく理解していれば、同じsagaインスタンスに同時にアクセスするスレッドが複数ある場合はどうなるかという質問です。NServiceBusは、基盤となるストレージを使用して、特定のsagaインスタンスを同時に作成/更新できるスレッドが1つだけであることを確認しています。他のユーザーはロールバックし、再試行に対するNServiceBusのサポートにより、メッセージが再試行され、それによって競合状態が解決されます。あなたはここでもっと読むことができます:

http://andreasohlund.net/2012/09/19/nservicebus-sagas-and-concurrency/

于 2012-09-19T20:37:42.730 に答える
1

複数のサガが同じインスタンスデータを共有する可能性は低く、それらがどのように機能するように設計されているかではありません。佐賀は、長時間実行されるプロセスのインスタンスです。sagaデータクラスは、そのインスタンスに関する情報を格納できるようにする単なる構成であり、そのインスタンスの存続期間にわたってその状態を管理するのに役立ちます。パフォーマンスを向上させたい場合は、ワーカーエンドポイントの配布を検討することをお勧めします(http://docs.particular.net/samples/scaleout/)。

于 2012-09-11T22:07:02.450 に答える