2011-03-15 79 views
0

我有一个在同一系统上的服务直接通信的桌面应用程序。我想解耦它们并在中间使用一个队列。我发现的大多数排队解决方案都是针对企业用途的,而不是用于进程间通信。需要一个简单,持久,单系统解决排队

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

回答

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