【发布时间】:2015-10-16 16:24:39
【问题描述】:
我正在寻找在 node.js 网络应用中设置延迟作业的解决方案。
我的第一个想法是使用 RabbitMQ - Dead Letter Exchanges 和 Per-Message Time-To-Live。通过将消息标记为持久性,我们可以保证消息不会丢失。可以在每条消息的基础上指定 TTL,因此可以为每个任务指定以毫秒为单位的延迟 - 这也很重要,我们可以将任何值作为消息过期属性。 但在 RabbitMQ 网站上有一个警告:
过期的消息可以在未过期的消息后面排队,直到后者被消耗或过期。
例如,如果队列中有消息具有以下过期字段:30s 20s 10s,则消息的处理程序将以相同的顺序触发,而不是预期的 10s 20s 30s。
所以我需要另一种开箱即用的解决方案。
【问题讨论】:
-
对于相同延迟范围内(或接近延迟范围)内的任务组使用单独的队列怎么样?
-
@zaq178miami 当您没有预定义的延迟范围时,这不是一个选项
标签: node.js rabbitmq delayed-job delayed-execution