C# 排队与隔离存储

C# 排队与隔离存储,c#,queue,isolatedstorage,C#,Queue,Isolatedstorage,我有一个小应用程序,它对一些请求进行排队,并将它们从堆栈中取出 但是,服务器上为队列提供服务的应用程序在任何时候都可能失败,我需要能够在应用程序再次启动时重建队列。这无法在数据库中处理,因为在此环境中,数据库读取和写入速度较慢,因此排队至少会让用户感觉到速度 是否有人知道有一个库可以让我将队列存储在独立存储中。在enqueue和dequeue操作期间,它需要能够随时维护队列 到目前为止,我唯一尝试过的是序列化队列项目,因为它们被推到队列上,但现在我被这种方法所束缚,这就是为什么我希望可能会有一个

我有一个小应用程序,它对一些请求进行排队,并将它们从堆栈中取出

但是,服务器上为队列提供服务的应用程序在任何时候都可能失败,我需要能够在应用程序再次启动时重建队列。这无法在数据库中处理,因为在此环境中,数据库读取和写入速度较慢,因此排队至少会让用户感觉到速度

是否有人知道有一个库可以让我将队列存储在独立存储中。在
enqueue
dequeue
操作期间,它需要能够随时维护队列

到目前为止,我唯一尝试过的是序列化队列项目,因为它们被推到队列上,但现在我被这种方法所束缚,这就是为什么我希望可能会有一个库

编辑

每次有
排队
出列
时,是否简单地重新序列化整个队列


我该如何“偷看”整个队列以首先获取所有项目?

我的第一个建议是使用持久性,或者两者都使用故障转移,它们很容易识别。ActiveMQ有自己的数据库,您也可以插入自己的数据库

如果您不想使用数据库,ActiveMQ仍然将数据保存在临时文件中,并为您提供可靠性

如果您不想使用这些产品,您可以使用,并且每当您排队时,都会将其异步写入一个独立的存储,然后您必须在排队时维护它。 另外,你可以考虑分开的应用程序域,所以如果你的主应用程序掉了,你仍然可以运行你的队列。p> 我相信你会有更多的案例,这只是直觉

编辑:

序列化整个队列将大大降低您的速度,因为序列化成本很高。

Peek是作为每个队列的一个功能实现的。

我的第一个建议是使用持久性,或者两者都使用故障转移,它们很容易识别。ActiveMQ有自己的数据库,您也可以插入自己的数据库

如果您不想使用数据库,ActiveMQ仍然将数据保存在临时文件中,并为您提供可靠性

如果您不想使用这些产品,您可以使用,并且每当您排队时,都会将其异步写入一个独立的存储,然后您必须在排队时维护它。 另外,你可以考虑分开的应用程序域,所以如果你的主应用程序掉了,你仍然可以运行你的队列。p> 我相信你会有更多的案例,这只是直觉

编辑:

序列化整个队列将大大降低您的速度,因为序列化成本很高。

Peek是每个队列的一项功能。

请不要在标题前加上“C”。这只会让标题难看,标签已经覆盖了它。@JohnSaunders,是的,很公平。谢谢你的编辑请不要在标题前加上“C”。这只会让标题难看,标签已经覆盖了它。@JohnSaunders,是的,很公平。谢谢你的编辑是的,但是“偷看”只看队列中的最后一项,这真是太可惜了。至于你提到的两种产品,我认为RabbitMQ看起来是一个很可能的候选产品。我会调查的+谢谢。是的,peek只看最后一项。如果您想查看所有这些内容,您必须获取所有内容,将它们放在堆栈上,然后将其存储回队列。ActiveMQ也是一个非常好的产品。我用过它,而且很开心。如果你的消费者不如制作人快,我不会推荐MSMQ。是的,但ActiveMQ是买衣服的,而且这些人,嗯,很紧!隐马尔可夫模型。。。ActiveMQ是开源软件。它是基于java的,但我在.NET中成功地使用了它。是的,但是“peek”只查看队列中的最后一项,这是一个遗憾。至于你提到的两种产品,我认为RabbitMQ看起来是一个很可能的候选产品。我会调查的+谢谢。是的,peek只看最后一项。如果您想查看所有这些内容,您必须获取所有内容,将它们放在堆栈上,然后将其存储回队列。ActiveMQ也是一个非常好的产品。我用过它,而且很开心。如果你的消费者不如制作人快,我不会推荐MSMQ。是的,但ActiveMQ是买衣服的,而且这些人,嗯,很紧!隐马尔可夫模型。。。ActiveMQ是开源软件。它是基于java的,但我在.NET中成功地使用了它。