计划作业队列的替代选项?

计划作业队列的替代选项?

我非常喜欢使用队列进行进程间通信。能够启动大量工作程序并保证队列中的作业只运行一次、得到公平对待、可以水平扩展,并且如果处理速度不够快,可以选择过期,这真是太棒了。

但是,我似乎找不到支持在指定时间将作业放入队列的作业队列实现。

解决这个问题的最佳方法是什么? 有这样的队列吗?

到目前为止,我对这种队列的替代方案是:

  1. beanstalkd - 支持延迟作业,我可以计算现在和指定时间之间的差值。
    • 不精确:时区变化或非常大的增量(数月)时会发生什么
  2. “at” 命令——创建一个 at 作业,该作业将在指定时间启动并将计划作业放入队列中。
    • 绑定到一台机器:如果系统重新启动会发生什么?如何将作业移植到新服务器?单点故障
    • 如果停机时间较长,请手动处理到期问题。
  3. delayed_job/custom polling - 创建一个守护进程(类似于 delayed_job),它不断轮询计划作业的数据库并在指定的时间插入队列
    • 似乎太复杂了

答案1

类似于开源作业调度器可能合适……

相关内容