2011-03-15 97 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