如何按特定顺序处理邮件?

时间:2012-07-12 17:46:12

标签: .net architecture queue message-queue

我的应用程序必须按特定顺序处理来自客户端的消息。如果消息包含相同的标记,则必须按顺序处理这些消息,不能在不同的线程中同时处理它们。可以从不同的客户端获得具有相同标签的消息。标签未预先指定。如何实现这个要求?是否有开箱即用的解决方案,具有此功能的队列,还有其他...

2 个答案:

答案 0 :(得分: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 } };
}

答案 1 :(得分:0)