複数の長時間実行プロセスを実装するプロジェクトを継承しました。これらの各プロセスは、ajax ポーリングを介して UI に反映されるステータス テーブルを更新します。これらのプロセスは、Rhino Service Bus (MSMQ を使用) を使用するバックグラウンド アプリケーションで実行されており、プロセスは「長いプロセスの実行」メッセージを送信することによってトリガーされます。
プロセス自体は、多数のテーブルに対してあらゆる種類のデータ操作、検証、更新、挿入、削除などを行っています。
複数のセッションと入れ子になった TransactionScopes をあちこちに配置して NHibernate セッションを実際に悪用しているようです。
NHibernate / RSB の専門家に質問したいのですが、長時間実行されているプロセスの実行中にステータス テーブルをどのように更新しますか?
私は考えました:
- プロセスの実行中に「ステータス メッセージの更新」を送信します (NHibernate / RSB セッション管理の問題を解決する必要があります)。
- データベース永続化機能を備えた saga を使用し、ステータス テーブルの代わりに ajax ポーリング関数にクエリを実行させる