gpt4 book ai didi

node.js - Kue:连续处理/轮询队列的最佳实践

转载 作者:搜寻专家 更新时间:2023-11-01 00:38:22 26 4
gpt4 key购买 nike

持续处理添加到队列中的项目的最佳方法是什么?我看到下面的方法

queue.process

https://github.com/Automattic/kue#processing-jobs

但这将处理并返回。在此调用之后添加的项目显然未被处理。

我想做的:

queue.on('job enqueue', function(id, type){
queue.process('email', function (job, done) {
console.log('processing one: ' + job.id);
done(null);
});
});

但不确定这是否会触发忽略当前队列状态的多个进程方法?

编辑:

我已经创建了一个处理程序来监听“电子邮件”类型,但在下面的场景中它只被调用一次。除非我遗漏了什么,否则我希望流程在这里运行 10 次?

const queue = kue.createQueue();

queue.process('email', function (job, done) {
email(job.id, job.data, done);
});

var email = function(id, email, done) {
console.log('job: %s, sent to: %s number: %s', id, email.to, email.number);
done(null, {result: 'OK'});
};

queue
.on('job enqueue', function (id, type) {
console.log('job %s got queued of type %s with id %s', id, type);
})
.on('job complete', function (id, result) {
console.log('job complete: ' + id);
});

for (var i = 0; i < 10; i++) {
queue
.create('email', {
title: 'welcome email for tj',
number: i,
to: 'tj@learnboost.com',
template: 'welcome-email'
})
.removeOnComplete(true)
.save();
}

最佳答案

传递给 queue.process 的函数将为每个排队的作业调用。

将其视为一个事件处理程序:它“监听”(在本例中)“电子邮件” 事件/作业,并且对于每一个事件/作业都将调用处理函数。因此,“显然未处理此调用后添加的项目”是不正确的

根据 the fine manual , “默认情况下调用 queue.process() 一次只会接受一个作业进行处理”,但您可以增加并发性:

queue.process('email', 20, function(job, done){
// ...
});

一些示例代码显示了为每个新作业调用处理程序:

const kue   = require('kue');
const queue = kue.createQueue();

queue.process('email', function(job, done){
console.log('got job', job.data);
done();
});

setInterval(() => {
queue.create('email', {
timestamp : new Date()
}).save();
}, 1000);

关于node.js - Kue:连续处理/轮询队列的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43676081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com