単一のプロデューサー、単一のコンシューマーのFIFOクエリが必要です。
- 受信した順にメッセージを処理する必要があります。
- メッセージを処理している間、呼び出し元は待機するべきではないため、これを非同期で行う必要があります。
- 次のメッセージ処理は、前のメッセージ処理が終了したときにのみ開始する必要があります。「受信」メッセージの頻度は、「処理」メッセージの頻度よりも高い場合があります。しかし、平均して、すべてのメッセージを処理できるはずです。たまに、それらのパックを「キューに入れる」必要があります。
つまり、TCP / IPと非常によく似ており、プロデューサーとコンシューマーが1つずつあり、処理するよりも速くメッセージを受信できる場合があるため、クエリを実行する必要があります。順序が重要であり、発信者がそのようなもので何をしているのかまったく興味がない場合。
これは簡単そうに聞こえますし、一般的なものを使用できる可能性がありますが、 etcを使用してコードを記述したくないので、これQueue
を使用したいと思います。BlockingCollection
ManualResetEvent
私の仕事にどれほど適しBlockingCollection
ていますか、そしておそらくあなたは何か他のものを提案することができますか?