.NET快速持久化队列

11

我正在寻找一个队列系统,多个不同的订阅者可以从中央队列中拉取项目。这些消息将非常轻量级,但我需要一些持久性强且非常快速的解决方案,因为消息的数量将很大。MSMQ有点重,我正在寻找一些轻量级的替代建议。有什么建议吗?


一个带有适当锁定机制的数据库表? - Mitch Wheat
我们目前正在使用一个数据库表。但是,它相当慢。我需要一些具有更高吞吐量和功能的东西... - Matt
但是,它相当慢。- 它不应该是这样的。你认为什么是慢? - Mitch Wheat
2
如何使用ConcurrentQueue将数据存储在内存中,并定期持久化到数据库中?http://msdn.microsoft.com/zh-cn/library/dd267265.aspx - rsbarro
从某种意义上来说,这个过程需要不断地打开与SQL的连接并更新队列,因此速度较慢。似乎使用本地工具会更快。我想我可以使用某种嵌入式数据库,但这对于一个工作队列来说可能太重了。 - Matt
2个回答

3

codeproject 上有一个非常不错的项目。它是 MSMQ 的轻量级替代品。 您可以使用自己选择的持久化存储,它默认使用 Sqlite。 这非常不错。


2
我认为这里的问题是你是否“需要”持久性?如果你需要保护免受重复、多个客户端和持久性的影响,那么你将不得不追求队列管理器的锁定方案,这将导致性能下降。除非你将队列存储放在高速文件共享上,否则持久性本身会对你造成损害。
如果你可以重新设计应用程序以使其在队列崩溃后仍然可用(在服务器上保留数据流,或者使用请求/响应消息体系结构),那么你就可以避免使用持久性。如果你这样做,你会发现你的队列管理器完全运行在内存中,速度极快。

有趣。我们正在构建的应用程序非常处理器密集型,我设想了一种情况,其中一个服务器充当代理,将任务分配给另一个“处理”服务器。在这种情况下,我只需要代理上的队列具有弹性。您是否有任何参考点或指南示例,可以帮助构建此类系统? - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接