2009-05-27 4 views
0

メッセージキューにRabbitMQを使用して、iPhoneアプリ用のRubyとSinatraで簡単なレシピ検索エンジンを構築しています。私は、バックグラウンドプロセスのためのさまざまな実装の選択肢を探し回っていますが、それらのほとんどはカスタムメッセージキューアルゴリズムを実装するか、Railsプラグインとして動作します。フレームワークにとらわれないRubyバックグラウンドワーカーライブラリの最適なオプションは何ですか?

RabbitMQでうまくいく高品質のフレームワークにとらわれないワーカーライブラリの点で、何がありますか?私は豆の木を使用していますし、daemons gemを使用して独自のデーモンを書かれている

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

答えて

1

私はmy own libraryを、制御不能なヤクシェービングに合わせて書きました。デーモンキットは適切な一般的なアイデアでしたが、真剣に私のニーズには重量がありませんでした。私はデーモンごとに完全なレールアプリのように見えません。私は少なくとも3つのデーモンで終わるつもりです、そしてそれはディレクトリの巨大な混乱でしょう。デーモンの宝石は恐ろしいAPIを持っています。私はそれを抽象化するように誘惑されていましたが、フォークを自分で管理するほうがおそらく簡単だと私は気付きました。

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プレイブックからページを取った:callメソッドを実装しているものはChainGang.prepareとChainGang.workメソッドの引数として公正なゲームなので、Procは有効なワーカーオブジェクトです。

何か他のものを使用した場合よりもビルドに時間がかかりましたが、長期的には妥協することはないという漠然な疑念があります。

+0

FWIW、私は以来、このライブラリを放棄してきました。 –

1

とは明らかに超えて、労働者のコードを書いている間、私は心に留めておく必要がありますがいずれかのベストプラクティスです。 Daemon kitは新しいプロジェクトですが、キューループはまだ実装されていません。必要に応じてNaniteを見ることもできます。それはフレームワークにとらわれないものです。

0

nanite(Rubyで書かれています)をチェックしてください。これはrabbitmqの上に書かれた若いプロジェクトです。

github.com/ezmobius/nanite/tree/master

+0

ピクはそれに拍手する。 :-) –

関連する問題