任务的小背景——我正在为 Shopify 构建废弃的购物车回收系统。在用户结帐后,Shopify 调用我们的 webhook,并且 webhook 将该请求作为作业排入队列 A 中,延迟 5 分钟。当工作人员开始处理该作业时,它会检查该结帐是否已支付。如果尚未付款,则会向用户发送购物车恢复消息。
我正在使用 Node.js、Express.js、Redis 和 BullMQ 来实现服务器和排队系统。我试图通过 BUllMQ 的基本示例。在网上,找不到一些关于如何在生产级系统中使用它的高级示例。
现在,我被以下这些问题困住了——
由于 Redis 是内存数据库,我必须将每个传入的作业保存在我的 MongoDB 集合中,最初状态为 PENDING 并侦听完成事件以在数据库中将该状态更改为 COMPLETED。每当我的服务器重新启动时,我都会获取所有处于 PENDING 状态的作业并将它们添加到队列中。这样,即使 Redis 出现故障或重新启动,我们也可以恢复我们的工作。我的问题是 - 在生产级应用程序中做这样的事情有意义吗?,我应该在 MongoDB 中保存工作吗?& 在实施此流程时,我还应该注意哪些其他事项?
现在,Bull 队列(让我们将其命名为“A”)正在快速服务器中进行初始化。每次服务器重新启动时,队列 A 也会被初始化。我的问题是 - 是否重新初始化队列 A,删除 Redis 上的旧队列 A?围绕这个问题我还能做些什么?
对于这方面的任何帮助,我将不胜感激。