我真的很喜欢使用队列进行进程间通信。 能够腾出大量的工人,保证队列中的工作只运行一次,公平地处理,可以水平缩放,如果处理不够快,可以select失效。
但是,我似乎无法find一个作业队列实现,也支持在指定的时间将作业放入队列。
什么是解决这个问题的最好方法? 像这样的队列是否存在?
到目前为止,我select这样一个队列是:
- beanstalkd – 支持延迟工作,我可以计算现在和指定时间之间的增量。
- “at”命令 – 创build一个可以启动的作业,并将计划作业在指定的时间放入队列中。
- 绑在一台机器上:如果系统重新启动会发生什么? 如何将作业移植到新的服务器上? 单点故障
- 如果您的停机时间很长,请手动处理过期。
- delayed_job /自定义轮询 – 创build一个守护进程(类似于delayed_job),持续轮询预定作业的数据库并在指定时间插入队列