预定工作队列的备选scheme?

我真的很喜欢使用队列进行进程间通信。 能够腾出大量的工人,保证队列中的工作只运行一次,公平地处理,可以水平缩放,如果处理不够快,可以select失效。

但是,我似乎无法find一个作业队列实现,也支持在指定的时间将作业放入队列。

什么是解决这个问题的最好方法? 像这样的队列是否存在?

到目前为止,我select这样一个队列是:

  1. beanstalkd – 支持延迟工作,我可以计算现在和指定时间之间的增量。
    • 不精确:在时区更改或真正大的增量(月)
  2. “at”命令 – 创build一个可以启动的作业,并将计划作业在指定的时间放入队列中。
    • 绑在一台机器上:如果系统重新启动会发生什么? 如何将作业移植到新的服务器上? 单点故障
    • 如果您的停机时间很长,请手动处理过期。
  3. delayed_job /自定义轮询 – 创build一个守护进程(类似于delayed_job),持续轮询预定作业的数据库并在指定时间插入队列
    • 似乎太复杂了

像开放源码作业调度程序可能是适当的…