特定のイベントが発生したときにバックグラウンドで実行されるサービスを作成しようとしています。ユーザーがメールを確認するときの例として、未確認の重複メールフォームデータベースを削除するサービスが必要です。kueを使用して目的を保存しようとしましたが、帆が上がるとサービスが実行されるようになると思いますか?
特定のイベントが発生したときにサービスを実行する方法は? どんな助けでも大歓迎です。
ありがとう
特定のイベントが発生したときにバックグラウンドで実行されるサービスを作成しようとしています。ユーザーがメールを確認するときの例として、未確認の重複メールフォームデータベースを削除するサービスが必要です。kueを使用して目的を保存しようとしましたが、帆が上がるとサービスが実行されるようになると思いますか?
特定のイベントが発生したときにサービスを実行する方法は? どんな助けでも大歓迎です。
ありがとう
あなたは確かKue
にこの目的のために使用することができます.
の構成ファイル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;
Kue
関連するコントローラー アクションにジョブを追加します。
var kue_engine = sails.config.kue;
kue_engine.create('delete_verified_email', {email: '123@456.com'})
.priority('medium')
.attempts(3)
.save();
プロジェクト ルートに を作成して、ジョブ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();
});
を実行しworker.js
て、sails アプリによって作成された kue ジョブを使用します。
Sails.js ライフサイクル フックが役立つかもしれません。たとえば、ユーザー更新呼び出し後にタイプごとのユーザー数を保持するなど、統計を更新するためにそれらを使用しています。
また、Node Agenda (Sails.js フック)を使用して、将来の定義された時間に 1 回実行されるか、cron ジョブのように実行されるジョブを作成します。おそらく、無効/期限切れの電子メール アドレス検証エントリを収集してパージし、1 時間ごとにまとめて削除することをお勧めします。