我看过RabbitMQ、Beanstalk和Resque,它们似乎都面向异步、非延迟任务(即,尽可能快地运行所有这些任务)。
他们中的任何一个都支持在某个时间戳上安排任务吗?
我看过RabbitMQ、Beanstalk和Resque,它们似乎都面向异步、非延迟任务(即,尽可能快地运行所有这些任务)。
他们中的任何一个都支持在某个时间戳上安排任务吗?
Beanstalk 提供了一个“延迟”参数,您可以将延迟队列上的消息延迟特定时间段。
Resque 有一个或多个调度附加组件,用于调度任务。
对于队列,延迟通常是一个整数,指定延迟的秒数(在这种情况下,您需要转换为所需的增量)。更强大的调度——例如作为任务队列的一部分——通常会通过客户端库获取日期时间值。
请注意,您还可以使用 IronMQ 推送队列(具有类似 beanstalk 的延迟)或 IronWorker(调度任务而不是排队)。(请注意,我为 Iron.io 工作。)
Deplayed_job 这样做:
Delayed::Job.enqueue(MailingJob.new(params[:id]), 3, 3.days.from_now)
http://railscasts.com/episodes/171-delayed-job?view=asciicast