質問

私は、顧客の払い戻しは搾取工場の労働者に渡されRailsアプリケーションに取り組んでいます。返金が失敗した場合(私たちはその時点での支払い処理に達することができないので)私が仕事をキューに再登録します。

class RefundWorker < Sweatshop::Worker

def process_refund(job)
  if refund
    Transaction.find(job[:transaction]).update_attributes(:status => 'completed')
  else
    sleep 3
    RefundWorker.async_process_refund(job)   # requeue the job
  end
end

上記よりもこれを行うに任意のより良い方法はありますか?私はRabbitMQの中に任意の「遅れ」機能を発見していない、これは私がこれまでに作ってみた最適なソリューションです。私はrequeueingながらビジーループを避けたい。

役に立ちましたか?

解決 3

これは、AMQP(あるいは少なくともRabbitMQの)ように見えるしていませんという考えをサポート「この仕事を遅らせるを。」それが失敗したのであれば、作業者の内部からの再キューイング同じ仕事へのアプローチは、この時点で最善の解決策であるように思われる。

私は、デモ環境で動作するコードを持っており、それはこれまでの私のニーズを満たします。

他のヒント

あなたはルーテとミニオンのようなものを見ていますか?

ここではいくつかのリンク: http://delicious.com/alexisrichardson/rabbitmq+work+ruby

また、ネイティブのRuby話すことはありませんが、HTTP + JSONを話すんセロリを試すことができます。

のRabbitMQと上記の作品のすべてので、あなたを助けるかもしれない。

乾杯

アレクシス

時限配信サービスをお持ちですか?あなたは、タイム・トゥ・提供に包まれたペイロードとして提供するメッセージを送信したい、と指定した時間に達するまでのサービスは、メッセージを握るだろう。そのようなものは、私の知る限り承知しているとして、RabbitMQのサーバやAMQPクライアントライブラリのいずれかに存在していないが、あると便利なものになると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top