events - 有没有办法使用像redis这样的持久性数据库来延迟特定时间?
问题描述
我想在两个函数调用之间插入 30 分钟的延迟,例如:发送 fcm/sms 后 30 分钟后发送电子邮件。
我正在尝试为此使用 Redis,因此我使用节点模块名称 Bull,它允许我创建具有延迟的作业并将其推送到队列中。//向用户发送短信
sms(null, {to: phone,content: {msg: "test message"},sender: "XYZ"});
// 这里我要加一个 30 分钟的延迟
// 向用户发送通知 fcm(null,{user_ids: userId,message: "restart!!!"});
我不想使用 setTimeout,因为如果我的应用重新启动,它将无法工作。
解决方案
我可以使用公牛https://www.npmjs.com/package/bull来做到这一点,这个包包含以毫秒为单位添加延迟的选项:- 例如,添加 30 分钟的延迟
providerDelayedQueue.add(options, { delay: 1800000 });
上述作业将至少在延迟 30 分钟后被消耗。
推荐阅读
- google-apps-script - 使用身份验证从 Dialogflow 向 Appscript 发送请求
- javascript - 使用 React 的计时器应用程序:每次渲染后都会清除 setInterval
- jmeter - 如何为线程组中的单个请求实现 10tps 吞吐量
- python - 使用 BeautifulSoup 从网站中抓取每个元素
- c# - 如何处理 System.Windows.Media.Brushes
- python - 为什么 f-strings 格式不适用于 Pandas DataFrames?
- angular - 如何在使用 Angular innerHtml 时保持样式?
- php - PHP 警告:ftp_login():先用 USER 登录
- wix - 错误“系统管理员已设置策略以阻止此安装”,同时使用 perUser 安装实施 MSI 包
- android - 发回数据后Android导航库崩溃