【发布时间】:2016-08-27 00:21:12
【问题描述】:
我在我的应用程序中使用 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完成作业之前如何锁定它?
【问题讨论】:
-
使用专用队列并分配 1 个工作人员来处理该队列。
标签: ruby-on-rails ruby redis sidekiq sidekiq-superworker