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 回答