Я использую ioredis в качестве системы очередей для моего работника.
Согласно документации, BLPOP берет любое количество списков и извлекает из них необходимый элемент.
Я пропустилздесь некоторые важные подробности о Redis / BLPOP?
Любая помощь будет действительно признательна.
Для одной очереди / списка это работает совершенно идеально.
Это блокирует все из них.
getMessage(callback) {
return new Promise((resolve, reject) => {
this.rclient.blpop(
QUEUE_TYPES.INVOICE_QUEUE,
QUEUE_TYPES.AUDIT_MUTATION_QUEUE,
QUEUE_TYPES.AUDIT_QUEUE,
QUEUE_TYPES.ERROR_QUEUE,
1,
(err, res) => {
if (err) reject(err);
else resolve(callback(err, res));
},
);
});
}
Это прекрасно работает.
getMessage(callback) {
return new Promise((resolve, reject) => {
this.rclient.blpop(
QUEUE_TYPES.INVOICE_QUEUE,
1,
(err, res) => {
if (err) reject(err);
else resolve(callback(err, res));
},
);
});
}