我有8个队列运行,我想弹出,如果队列有一个推。应用程序有多个用户和队列几乎总是有数据。
我想用BLPOP
替换LPOP
,但在所有队列中使用它不会弹出数据
下面是我代码示例
async function queuePop(queue) {
const value = await redis.blpop(queue, 0);
if (value) {
const data = JSON.parse(value[1]);
return data;
}
}
async function processQueue(queue) {
while (true) {
try {
const data = await popFromQueue(queue);
} catch (err) {
console.error('Error processing job', err);
}
}
}
function ProcessingFunction(data) {
const data = await processQueue('queueName')
console.log(`Processing data: ${data}`);
}
calling ProcessingFunction() in a setTimeout
字符串
1条答案
按热度按时间bjg7j2ky1#
为了实现多队列的BLPOP,我们需要多个Redis Client示例。例如:
字符串
因此,当数据库1中没有数据时,该示例的连接将断开,Redis客户端的所有示例也是如此。
BLPOP
有一个限制,因为我们不能像在LPOP
中那样使用Limit