メッセージハンドラの推奨寿命はどれくらいですか?
私の現在の実装では、特にデータアクセス(NHibernate)に関して、いくつかの問題が発生しています。
現在の実装は次のとおりです。
クライアントアプリケーション(Web)
キューにメッセージを送信します(メモリ内、msmq、azure)
ワーカーアプリケーション(Windowsサービス)
キューをポーリングし、登録されたハンドラーにメッセージを渡します。
ワーカーを初期化するときに、ハンドラーを登録します。ハンドラーは(を使用して)遅延ロードLazy<T>
されるため、キュープロセッサーが実際に(別のスレッドで)起動するまでハンドラーは作成されません。
ハンドラーが初期化されると、依存関係が入力され、キュープロセッサーがシャットダウンされるまでハンドラーはメモリに残ります。
私たちが抱えている問題の1つは、キュープロセッサ上のすべてのハンドラーに単一のNHibernateISessionを使用していることです。より良い解決策は、キュープロセッサの各サイクルでハンドラーを再作成することであるように思われます。つまり、各ハンドラーは独自のISessionを持つことができます。
推奨されるアプローチは何ですか?