2013-01-11 17 views
12

私のnode.jsアプリケーションで遅延ジョブにkueを使用しています。Node.js失敗したジョブを再起動する方法

私は、ジョブのIDを、失敗したジョブのリストから、redisコマンドを使用して非アクティブなジョブのリストに手動で移動することなく、kueのAPIを使用してジョブを再開できるかどうかを判断するためにいくつかの問題があります。

これはkueで可能ですか?

再試行回数を一定に設定したくない - 特定のジョブを再試行したいだけです。

kueの代わりによく使われている方法についての提案も歓迎します。

私はこれが動作しているか知らないけど、あなたがアクティブにジョブの状態をリセットしようとすると、再び仕事を救うことができる

答えて

11

job.on('failed', function() { 
    job.state('inactive').save(); 

編集:非アクティブに設定状態を正しくます再エ​​ンキュー仕事。

+1

感謝! 「アクティブ」ではなく「非アクティブ」に設定する必要があります。それ以外の場合は処理されなくなります。コードを見て、このように状態を変更すると、指定されたリストにジョブを再割り当てしないと考えました。 – Matthias

3

これは、キューレベルのイベントを使用して行うこともできます。

queue.on('job failed', function(id, result) { 
    kue.Job.get(id, function(err, job) { 
     if (!err && shouldRetry(job)) 
      job.state('inactive').save(); 
    }); 
}); 

したがって、再試行するすべてのジョブに対して実行する必要はありません。代わりに、キューレベルのイベントでフィルタリングできます。

0

は、彼ら が失敗としてマークされている、彼らは失敗したときには、一つだけの試みを持っている公式ドキュメントのデフォルトのジョブによる

に失敗試みを見て、あなたが介入するまで、そのように残っています。 しかしKueではこれを指定することができます。これは、ジョブの場合には重要です。 電子メールの転送などです。失敗した場合は通常、問題なしで を再試行します。これを行うには、番号を指定して.attempts()メソッドを呼び出します。

queue.create('email', { 
    title: 'welcome email for tj' 
    , to: '[email protected]' 
    , template: 'welcome-email' 
}).priority('high').attempts(5).save(); 

参照:failure attempts

関連する問題