2009-05-27 22 views
0

我正在用Ruby和Sinatra爲iPhone應用程序構建一個簡單的配方搜索引擎,並將RabbitMQ用於我的消息隊列。我環顧四周,爲後臺進程找到很多不同的實現選擇,但其中大多數都實現了自定義消息隊列算法或作爲Rails插件運行。框架無關的Ruby後臺工作程序庫的最佳選擇是什麼?

在高質量的與框架無關的工作程序庫方面,RabbitMQ能夠很好地發揮作用的是什麼?

以及是否有任何的最佳做法,我應該記住,而寫工人的代碼,除了顯而易見的:

# BAD, don't do this! 
begin 
    # work 
rescue Exception 
end 

回答

1

我最終寫了my own library在一個不可控制的犛牛剃鬚適合。守護神工具包是正確的一般想法,但嚴重的方式太重量級,以滿足我的需求。我不希望每個守護進程都有一個完整的Rails應用程序。我最終會得到至少3個守護進程,這將是一個龐大的目錄混亂。守護進程寶石有一個可怕的API,當我試圖將它抽象出來時,我意識到自己管理這個fork可能更容易,所以這就是我所做的。

API看起來是這樣的:

require "rubygems" 
require "chaingang" 

class Worker 
    def setup 
    # Set up connections here 
    end 

    def teardown 
    # Tear down connections here 
    end 

    def call 
    # Do some work 
    sleep 1 
    end 
end 
ChainGang.prepare(Worker.new) 

然後你只需要使用包括rake任務啓動/停止/重新啓動或檢查狀態。我從Rack playbook中拿出一個頁面:任何實現call方法的方法都是公平遊戲,作爲ChainGang.prepare和ChainGang.work方法的參數,所以Proc是一個有效的工作對象。

花了我更多的時間來構建它,而不是使用其他東西,但我有一個模糊的懷疑,它將在長期的回報。

+0

FWIW,我已經放棄了這個庫。 – 2013-07-27 00:19:44

1

我使用的魔豆,並使用daemons gem已經寫我自己的守護進程。 Daemon kit是一個新項目,但是隊列循環尚未實現。如果它符合您的需求,您也可以看看Nanite,它與框架無關。

0

查看nanite(用Ruby編寫),這是一個寫在rabbitmq上的年輕項目。

github.com/ezmobius/nanite/tree/master

+0

Piku打敗你。 :-) – 2009-05-30 17:34:38

相關問題