我正在寻找在 Node.js Web 应用程序中设置延迟作业的解决方案。
我的第一个想法是使用 RabbitMQ - 死信交换和每条消息的生存时间。通过将消息标记为持久化,我们可以保证“消息不会丢失”。可以在每条消息的基础上指定 TTL,因此对于每个任务都可以指定以毫秒为单位的延迟 - 这也很重要,我们可以将任何值作为消息过期属性。 但 RabbitMQ 网站上有一个警告:
过期的消息可以在未过期的消息后面排队,直到后者被消耗或过期。例如,如果队列中的消息具有以下过期字段:30s 20s 10s,则消息处理程序将以相同的顺序触发,而不是预期的 10s 20s 30s。
所以我需要另一个开箱即用的解决方案。