我正在编写一个通知服务,超过5个其他服务向该服务发送请求,为了不延迟请求,我立即将每个请求推入队列,然后按其顺序进行处理。
一切都按预期进行,但失败导致应用程序崩溃,但仍有一些请求保留在队列中,下面程序中使用的逻辑将永远不会处理队列,而是继续向队列添加请求,因为queue.length()
总是大于1。
有没有一种方法可以检查addNotification
函数是否正在运行以便我在需要时触发它?
const notification = JSON.stringify(req.body);
if(await queue.length() > 0) {
await queue.push(notification);
} else {
await queue.push(notification);
//Initiate queue processor
process.nextTick(addNotification);
}
// Add notification to DB
function addNotification(){
(async()=>{
try {
while(await queue.length() > 0){
await Notification.create(JSON.parse(await queue.pop()));
}
} catch (err) {
throw err;
}
})();
}