2012-01-26 6 views
1

長時間実行されているビジネスプロセスを処理するためにNServiceBusサガを使用しています。ロードバランサの背後にある複数のWebサーバーからアクセスされるMVC 3アプリケーションがあります。NServiceBus - MVC 3アプリケーションでサガステータスを取得する

私は、ユーザーにプロセスを開始させることができ、私はサガの状態を判断できるようにしたいと考えています。

これを行うにはどのような方法が最適ですか?私はある種の持続的なストレージが必要だと感じていますが、実際にはこの1時間あたり何千ものサガを実行する可能性があるため、データベースに多くのヒットを必要としたくありません。

答えて

1

ステータスが変更されたときに、ステータスをBus.Sends()して、Webアプリケーションが見ることができるキャッシュまたはPVMを更新する別のエンドポイントにステータスを送信することができます。このエンドポイントは、電子メールなどの他のチャネルでユーザーと通信できます。これを別のエンドポイントにプッシュすると、あなたの佐賀は流れ続けます。

+0

私は実際にこれに似た何かをしました。私はmemcachedサーバーのセットアップをしていただけで、その変更をプッシュしました。これにより、私のWebサーバー(すでにmemcachedサーバーと通信中)が変更を取得することができました。適切なキーを使用して、キャッシュレコードをすばやく見つけることができました。 – Brandon

0

サガは、物事の状態を公開するイベントを公開することができます。とにかく、これはおそらく良いアイデアかもしれません。

あなたのWebアプリケーションはこのイベントを購読し、メモリ内の状態を更新することができます。もちろん、これはWebプロセスの再起動から生き残ることはできません。

これを処理するには、「あなたが言ったことを忘れました、再送してください」というコマンドを使用できます。 MVCアプリはwebapp start(知っていれば十分です)やオンデマンドでこれを送ります。それから、SagaはBus.Reply()を介してそのサーバだけに最新の状態ではないサーバにステータスレポートを返します。

関連する問題