安裝
# Gemfile
gem 'sidekiq'# console
$ bundle install
設置
Sidekiq
見 https://github.com/mperham/sidekiq/wiki/Advanced-Options。
ActiveJob 使用的 redis queue 名稱預設為 default
,ActionMailer 使用的 redis queue 名稱預設為 mailers
。
concurrency
參數需要小於或等於 config/database.yml
中的 pool
值。
# config/sidekiq.yml:concurrency: 16
:queues:
— [‘default’, 1]
— [“mailers”, 1]
ActiveJob 使用 Sidekiq
見 https://github.com/mperham/sidekiq/wiki/Active-Job,在 environments/development.rb
與environments/production.rb
中填入:
# environments/development.rb
config.active_job.queue_adapter = :sidekiq# environments/production.rb
config.active_job.queue_adapter = :sidekiq
設置 Sidekiq 管理介面
Sidekiq 提供了一個管理介面,見 https://github.com/mperham/sidekiq/wiki/Monitoring,要將此管理介面放入既有的 Rails 專案,只需要在 config/routes.rb
中加入:
# config/routes.rbrequire 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'
為 sidekiq 管理介面做權限控管,只讓 admin 可以查看管理介面,使用 devise
+ cancancan
做例子:
# config/routes.rbrequire 'sidekiq/web'authenticate :user, ->(u) { Ability.new(u).can? :manage, :admin } do
mount Sidekiq::Web => 'admin/sidekiq'
end
authenticate :user, ->(u) { condition }
這個式子中的 condition
是 true
即可通過驗證。
執行
$ sidekiq -C config/sidekiq.yml