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