排队和隔离存储

时间:2011-12-07 00:04:19

标签: c# queue isolatedstorage

我有一个小应用程序,它将一些请求排队并将它们从堆栈中拉出来。

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

有没有人知道可以让我将队列存储在独立存储中的库。在enqueuedequeue操作期间,它需要能够随时维护队列。

到目前为止,我唯一尝试的是序列化队列项目,因为它们被推入队列但是现在我仍然坚持使用方法,这就是为什么我希望可能有一个库。

修改

每次有enqueuedequeue时,答案是简单地重新整理整个队列吗?

我如何在整个队列中“peek”以获取所有项目?

1 个答案:

答案 0 :(得分:1)

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

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

如果您不想使用这些产品,可以使用ConcurrentQueue,每当您入队时,将其异步写入隔离存储,则必须在出列时进行维护。 此外,您可以考虑为此部分分离应用程序域,因此如果您的主应用程序出现故障,您仍然可以让您的队列运行。

我相信你会有更多的案例来解决这个问题只是直观的。

编辑:

序列化整个队列会减慢你的速度,因为序列化很昂贵 Peek是作为每个队列的一个特征实现的。