问题
We are deploying versions of a sidekiq worker to Cloud Foundry as part of a continuous delivery pipeline. We need to stop workers processing new jobs if they are no longer the latest version. So:
- Worker v1 is running and performing a 30 min job.
- We deploy v2 of the worker code.
- v1 should continue with current jobs but not start any new ones.
CloudFoundry won't allow us to send USR1, so we need a solution that allows the workers to determine if they are the latest version before every job starts.
回答1:
Use a new queue name in your V2 codebase
e.g/
class ImportantWorker
include Sidekiq::Worker
sidekiq_options queue: :new_queue_name
....
end
and make sure you update your sidekiq config to reflect the new queue name
来源:https://stackoverflow.com/questions/26138858/how-can-i-prevent-sidekiq-processing-new-jobs-based-on-code-version