2016-08-10 14 views
0

特定のイベントが発生したときにバックグラウンドで実行されるサービスを作成しようとしています。たとえば、ユーザーが電子メールを確認すると、確認されていない重複電子メールフォームデータベースを削除するサービスが必要になります。私はkueを使って私の目的を保存しようとしましたが、帆が火を持ち上げるとサービスがもっと走ると思いますか?セイルの特定のアクションでバックグラウンドジョブを実行するjs

特定のイベントが発生したときにサービスを実行するにはどうすればよいですか?どんな助けでも大変に感謝します。

おかげ

答えて

1

たぶんSails.js lifecycle hooksはあなたを助けることができます。統計情報の更新などに使用しています。ユーザーの更新呼び出し後にタイプごとに永続的なユーザー数。

また、私たちはNode Agenda (Sails.js hook)を使用して、将来定義された時間に実行されるジョブを作成するか、cronジョブのようにします。無効になった有効期限の切れた電子メールアドレスの確認エントリを収集し、1時間ごとのバッチで削除することをお勧めします。

2

実際にはKueをこの目的で使用できます。

  1. は、関連するコントローラのアクションにKueにジョブを追加Kue

    var kue = require('kue'); 
    var kue_engine = kue.createQueue({ 
        prefix: 'kue', 
        redis: { 
        port: '6379', 
        host: 'localhost' 
        } 
    }); 
    
    
    process.once('SIGTERM', function (sig) { 
        kue_engine.shutdown(5000, function(err) { 
        console.log('Kue shutdown: ', err||''); 
        process.exit(0); 
        }); 
    }); 
    
    module.exports.kue = kue_engine; 
    
  2. のための設定ファイルkue.jsを作成します。

    var kue_engine = sails.config.kue; 
    kue_engine.create('delete_verified_email', {email: '[email protected]'}) 
        .priority('medium') 
        .attempts(3) 
        .save(); 
    
  3. kueジョブを消費するために、プロジェクトのルートにworker.jsを作成します。

    var kue = require('kue'); 
    require('sails').load({ 
        hooks: { 
         blueprints: false, 
         cors: false, 
         csrf: false, 
         grunt: false, 
         http: false, 
         i18n: false, 
         logger: false, 
         policies: false, 
         pubsub: false, 
         request: false, 
         responses: false, 
         session: false, 
         sockets: false, 
         views: false 
         } 
        }, function (err, app) { 
          sails.log.info('Starting kue'); 
          var kue_engine = sails.config.kue; 
    
          //register kue. 
    
          kue_engine.on('job complete', function (id) { 
           sails.log.info('Removing completed job: ' + id); 
           kue.Job.get(id, function (err, job) { 
            job.remove(); 
           }); 
          }); 
          kue_engine.process('delete_verified_email', 20, function (job, done) { 
           // you can access the data passed while creating job at job.data 
           // all the sails models, services are available here 
           console.log(job.data.email) 
           done && done(); 
          }); 
    
  4. あなたの帆のアプリで作成されたKUEジョブを消費するworker.jsを実行します。

関連する問題