我有一个桌面应用程序,它直接与同一系统上的服务通信。我想将它们分离并在中间使用队列。我发现的大多数排队解决方案实际上都是供企业使用,而不是用于进程间通信。
所以,我对你们所有人的问题是:你们中有没有经历过小规模的持久性队列?我正在考虑使用Apache Qpid,或者可能在系统上运行一个小型MySQL实例。有一个Queue for MySQL(http://q4m.github.com/)项目,但在生产系统中看起来有点年轻。
答案 0 :(得分: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