我在我的应用程序中使用 Rails 4,这就是我创建新工作的方式:
class FetchJob < ActiveJob::Base
queue_as :fetchjob
def perform num
puts num
sleep 30
end
end
此代码打印出 的值,num
然后休眠 30 秒。我正在使用 sidekiq gem 和 redis 来处理这个队列。创建用户后,我正在排队作业。
class FecthJobController < ApplicationController
def create
@user = User.create(user_params)
FetchJob.perform_later(@user.id)
end
private
def user_params
....
end
end
队列中的作业正在并行执行。队列中的作业是指 job1、job2、job3、job4 等。那么我怎么可能按顺序执行这些作业。即只有当job1完成时,它才会处理job2,然后是job3,依此类推。如何锁定它直到在sidekiq中完成工作?