0

私のアプリケーションは、クライアントからのメッセージを特定の順序で処理する必要があります。メッセージに同じタグが含まれている場合、これらのメッセージは順次処理する必要があり、異なるスレッドで同時に処理することはできません。同じタグを持つメッセージは、異なるクライアントから取得される場合があります。タグは事前に指定されていません。この要件を実装する方法は? すぐに使用できるソリューション、この機能を備えたキュー、その他のものはありますか...

4

2 に答える 2

1

これは「優先度キュー」のデータ構造に似ていますが、優先度の代わりに、メッセージをタグで区別して処理します。

正確なニーズが何であるかはわかりませんが、実装は非常に簡単です。

class TagQueue  {
    Dictionary<Tag, Queue> _queues;
    void Enqueue(tag, payload) {
        _queues[tag].Enqueue(payload);
    }
    Payload Dequeue(tag) {
        return _queues[tag].Dequeue(); 
    }
    Ienumerable<Tag> Tags { get { return _queues.Keys } };
}
于 2012-07-13T16:24:56.820 に答える
0

私は自分で答えを見つけました。 http://docs.masstransit-project.com/en/latest/overview/keyideas.html#sagas

于 2012-07-18T05:27:28.563 に答える