MSMQ から読み取り、ワーカー スレッドでそのメッセージを処理するエージェントに割り当てるメッセージの種類に基づいて、C# で記述された Windows サービスがあります。アプリケーションはエージェントなしで開始され、メッセージが MSMQ に到着すると実行時に動的に作成されます。
これがどのように機能するかの基本的な図は次のとおりです。
エージェント ワーカー スレッドが作業でビジー状態の場合、メッセージはそのローカル キューに入れられます。ここまでは順調ですね。ただし、何らかの理由でサービスが停止すると、ローカル キューの内容が失われます。
このシナリオを処理する最善の方法を見つけようとしています。現在、ローカル キューはSystem.Concurrent.ConcurrentQueue
. おそらく、Sql Ce db またはその他の永続ストレージを使用できますが、パフォーマンスが心配です。もう 1 つの考えは、エージェントがメッセージを処理する準備が整ったときにのみ MSMQ から読み取ることですが、問題は、MSMQ に含まれるメッセージがわからないことです。
この問題に対してどのようなアプローチが可能ですか?