0

特定のイベントが発生したときにバックグラウンドで実行されるサービスを作成しようとしています。ユーザーがメールを確認するときの例として、未確認の重複メールフォームデータベースを削除するサービスが必要です。kueを使用して目的を保存しようとしましたが、帆が上がるとサービスが実行されるようになると思いますか?

特定のイベントが発生したときにサービスを実行する方法は? どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

2

あなたは確かKueにこの目的のために使用することができます.

  1. の構成ファイルkue.jsを作成します。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関連するコントローラー アクションにジョブを追加します。

    var kue_engine = sails.config.kue;
    kue_engine.create('delete_verified_email', {email: '123@456.com'})
      .priority('medium')
      .attempts(3)
      .save();
    
  3. プロジェクト ルートに を作成して、ジョブworker.jsを消費します。kue

    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. を実行しworker.jsて、sails アプリによって作成された kue ジョブを使用します。

于 2016-08-11T14:24:32.570 に答える
1

Sails.js ライフサイクル フックが役立つかもしれません。たとえば、ユーザー更新呼び出し後にタイプごとのユーザー数を保持するなど、統計を更新するためにそれらを使用しています。

また、Node Agenda (Sails.js フック)を使用して、将来の定義された時間に 1 回実行されるか、cron ジョブのように実行されるジョブを作成します。おそらく、無効/期限切れの電子メール アドレス検証エントリを収集してパージし、1 時間ごとにまとめて削除することをお勧めします。

于 2016-08-10T19:35:06.900 に答える