MSMQから読み取り、ワーカースレッドでそのメッセージを処理するエージェントに割り当てるメッセージの種類に基づいて、C#で書かれたWindowsサービスがあります。エージェントのワーカースレッドが仕事をしてビジー状態の場合MSMQ並行処理設計の問題
:アプリケーションはここにそれがどのように動作するかの基本的な数字があるなしエージェントで始まり、メッセージがMSMQ
に到着すると、実行時に動的に作成されていますメッセージはローカルキューにキューイングされます。ここまでは順調ですね。しかし、何らかの理由でサービスが停止した場合、ローカルキューの内容は失われます。
私はこのシナリオを処理する最良の方法が何であるか把握しようとしています。現在、ローカルキューはSystem.Concurrent.ConcurrentQueue
です。私はおそらく、Sql Ceのdbまたはその他の永続的なストレージを使用することができますが、私はパフォーマンスが心配です。もう1つのことは、エージェントがメッセージを処理する準備ができているときだけMSMQから読むことですが、MSMQに含まれるメッセージがわからないという問題があります。
この問題を解決するには、どのような方法がありますか?
私はここでレディスを使いたいですが、それは過度のことだと思いませんか? – Obaid
全くありません。それは非常に軽いですし、それがうまく設計されたものですから、あなた自身で新しいものを醸造してデバッグするのではなく、あなたのために仕事をすることができるものを使用することができます。 また、メモリマップファイルを使用して、ある種の永続ストレージにすばやくアクセスできますが、いくつかの問題があります。スレッドセーフについてはわかりません。 –