2016-08-13 7 views
0

現在キュー内のジョブを処理するためにNode.js Kueを使用しようとしていますが、私は正しく実行していないと思います。Redis接続を待つ方法は?

私は現在作業していますが、私は2つの異なるサービス(この場合、私はDocker Composeで実行しています)を持っています。ここでの問題は、処理モジュールにあります。次のように

私はそれをコード化されました:私たちはノードでこれを実行すると

var kue = require('kue'); 
var config = require('./config'); 

var queue = kue.createQueue({ 
    prefix: config.redis.queuePrefix, 
    redis: { 
     port: config.redis.port, 
     host: config.redis.host 
    } 
}); 

queue.process('jobType', function (job, done) { 
    // do processing here... 
}); 

、それが処理を行うためにキューに置かれる事を待ってそこに座っています。

  1. それはRedisのはこのモジュールを実行する前に利用可能とすることが必要である:

    は、しかし、二つの問題があります。既に利用可能なRedisなしでこれを実行すると、ホストにアクセスできないためプロセスが終了するため、Redisがクラッシュします。

  2. Redisが突然使用できなくなった場合、処理モジュールは接続を確立できずプロセスが強制終了されるため、クラッシュします。

これらの問題を回避するにはどうすればよいですか?

私はRedisのコードをどうにかして "待つ"べきだと思っていますが、どうやってこれを行うのか分かりません。

この場合、どうすればいいですか?

答えて

0

約束を使用して、redisが読み込まれるまで待つことができます。次に、モジュールを実行します。

loadRedis().then(() => { 
    //load your module 
}) 

または、レディがロードされるまでジェネレータを使用して「停止」することができます。

function*(){ 
    const redisLoaded = yield loadRedis(); 
    //load your module 
} 
関連する問題