首页 > 解决方案 > 有没有办法使用像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,因为如果我的应用重新启动,它将无法工作。

标签: eventsredisdelay

解决方案


我可以使用公牛https://www.npmjs.com/package/bull来做到这一点,这个包包含以毫秒为单位添加延迟的选项:- 例如,添加 30 分钟的延迟

providerDelayedQueue.add(options, { delay: 1800000 });

上述作业将至少在延迟 30 分钟后被消耗。


推荐阅读