我想知道如何通过Queue / Bull在我的函数“ myCustomMethod”中运行代码。这是正确的方法吗?
./ models / Sport.js
export async function myCustomMethod(type, req)
{
console.log("This method should be executed via the Queue / Bull");
let computationResult = true;
return computationResult;
}
cronCustomFile.js
import { myCustomMethod } from './models/Sport.js';
cron.schedule('*/5 * * * * *', () =>
{
var battleRoyaleQueue = new Queue('battle_royale_queue');
console.log('Checking live events every 5 seconds');
battleRoyaleQueue.process(function (job, done)
{
try
{
console.log('Processing via battle_royale_queue');
myCustomMethod('live-events');
done();
}
catch (err)
{
console.log(err.message);
}
});
return true;
});
公牛版 “ bull”:“ ^ 3.6.0”
其他信息
参考
答案 0 :(得分:1)
在您的代码中,您正在创建一个工作程序以每5秒处理一次作业,但您并未创建要处理的作业。相反,您应该创建一次工作程序,然后创建一个添加到队列中并重复处理的作业。
config / bull.js
import Queue from 'bull';
import { myCustomMethod } from '../models/Sport.js';
var battleRoyaleQueue = new Queue('battle_royale_queue');
battleRoyaleQueue.process(function(job, done) {
const { type } = job.data
try {
console.log('Processing via battle_royale_queue');
myCustomMethod(type);
done();
} catch (err) {
console.log(err.message);
}
});
recurringJob.js
import battleRoyaleQueue from '../config/queues.js';
const beginReccuringJob = (type) => {
battleRoyaleQueue.add({type: type}, { repeat: { cron: '*/5 * * * * *' } });
};
beginReccuringJob('live-events');