循环任务
beanstalk支持延迟任务,put任务时制定delay时间,当这个时间到时该任务才会变成ready,就可以被worker处理,如果要实现循环任务,有两种方法:
- 任务里定时任务的标志以及定时时间,当worker处理任务时,检查到定时标志,先release with delay该任务,再处理任务,这种队列里就继续存在一个delay任务
- 专门创建一个存放循环任务的队列,一个特制的worker处理该队列的任务,该worker处理任务时,release with delay该任务,再put一个一般任务到业务队列,业务队列的worker就不管定时重置,只是处理任务
取消任务
业务上创建一个任务时,可以被取消,通过put创建任务返回的job.id需被存储,到时根据该job.id delete队列里对应的任务,如果该任务还是ready状态,那任务直接被delete;如果该任务是reserve状态,有worker正在处理时,考虑到取消任务业务,worker需要在处理任务时周期性的touch改job,如果touch返回not_found,worker需要直接中断任务处理、同时做些清理工作,如删除已经写入到数据库中的某些记录、delete一些子任务。
循环任务
beanstalk支持延迟任务,put任务时制定delay时间,当这个时间到时该任务才会变成ready,就可以被worker处理,如果要实现循环任务,有两种方法:
取消任务
业务上创建一个任务时,可以被取消,通过put创建任务返回的job.id需被存储,到时根据该job.id delete队列里对应的任务,如果该任务还是ready状态,那任务直接被delete;如果该任务是reserve状态,有worker正在处理时,考虑到取消任务业务,worker需要在处理任务时周期性的touch改job,如果touch返回not_found,worker需要直接中断任务处理、同时做些清理工作,如删除已经写入到数据库中的某些记录、delete一些子任务。