簡體   English   中英

如何在 Redis 和 Rails 中的 SideKiq 中順序處理隊列?

[英]How to process queue sequentially in Redis and SideKiq in Rails?

我在我的應用程序中使用 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

隊列中的作業並行執行。 隊列中的作業是指作業 1、作業 2、作業 3、作業 4 等。 那么我怎么可能按順序執行這些作業。 即只有當job1 完成時,它才會處理job2,然后job3,依此類推。 在sidekiq中完成工作之前如何鎖定它?

你可能會發現一個 hack 可以讓你做你想做的事,但讓我建議一些別的東西:你使用了錯誤的工具。 Sidekiq 並非旨在以這種方式運行。

https://github.com/mperham/sidekiq/wiki/Best-Practices#3-embrace-concurrency

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM