已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
2天前关闭。
Improve this question
我必须开发一个Node.js API,在收到请求后,我需要在5分钟延迟后向该人发送消息。但是,如果这个人在5分钟标记之前发送另一条消息,我需要重新设置计时器。为了实现这一点,当客户发送请求时,我使用setTimeout
函数。如果客户发送另一条消息,我将清除现有的超时并设置一个新的超时。
我担心这个解决方案的可行性,因为可能会有成千上万的请求进来。如果这种方法不适合,我将感谢您的建议,一个替代的解决方案。
app.post('/incomingMessage', express.json(), async function (req, res) {
var timeouts = {}
const id = req.body.from;
clearTimeout(timeouts[id]);
timeouts[id] = setTimeout(functionToSendMessage, 20000, id);
}
function functionToSendMessage(id) {
console.log(`message sent to ${id}`); \\ take it as message sent
delete queue[id]
}
1条答案
按热度按时间bgtovc5b1#
你的方法是可行的,但它可能不是最有效的。如果有成千上万的请求进入,您可能需要考虑使用队列来存储请求。这将使您能够按顺序处理请求,并避免必须清除现有超时。
在本地,我们可以这样做:
或者您可以使用
Redis
、Apache Kafka
、NATS
或RabbitMQ
,它们是现成的排队解决方案