1

我有一个桌面应用程序,它直接与同一系统上的服务通信。我想将它们解耦并在中间使用队列。我发现的大多数排队解决方案实际上是为企业使用而设计的,而不是用于进程间通信。

所以,我对你们所有人的问题是:你们中的任何人都有小规模持久队列的经验吗?我正在考虑使用 Apache Qpid,或者可能在系统上运行一个小型 MySQL 实例。有 Queue for MySQL (http://q4m.github.com/) 项目,但在生产系统中使用它看起来有点年轻。

4

1 回答 1

0

我正在研究类似的问题。我需要在磁盘上保留一个相对较小的队列,因为我需要能够延迟处理每个条目,而不会冒丢失任何数据的风险。我还需要多个进程能够同时排队,而其他进程能够同时出队。

我目前的想法是创建一个基于磁盘的队列,其中每个元素都写入一个文件,并且文件名对应于元素键。我所需要的只是实现简单的追加、锁定、解锁、删除和查找功能。简单的咨询文件锁定就足够了(Unix、C 语言)。

我还没有找到一个这样做的小型图书馆。我想我会越来越多地自己动手,因为我的问题不是很复杂。

我消除了 SQLite,因为我无法锁定我的整个队列,因为我需要高并发(队列将在一个表中)。我还淘汰了像 stxxl 或 ActiveMQ 这样的大规模解决方案。他们对我的项目来说完全是矫枉过正。我在实现基于磁盘的队列/出队的 IPC-DireQueue Perl 模块中找到了一些灵​​感(尽管我不能在我的项目中使用它)。

activemq http://activemq.apache.org/enterprise-integration-patterns.html

stxxl http://stxxl.sourceforge.net/

IPC-DireQueue http://metacpan.org/pod/IPC::DirQueue

于 2011-04-14T15:36:59.903 回答