39 lines
1.3 KiB
Markdown
39 lines
1.3 KiB
Markdown
|
# Sidekiq Style Guide
|
||
|
|
||
|
This document outlines various guidelines that should be followed when adding or
|
||
|
modifying Sidekiq workers.
|
||
|
|
||
|
## Default Queue
|
||
|
|
||
|
Use of the "default" queue is not allowed. Every worker should use a queue that
|
||
|
matches the worker's purpose the closest. For example, workers that are to be
|
||
|
executed periodically should use the "cronjob" queue.
|
||
|
|
||
|
A list of all available queues can be found in `config/sidekiq_queues.yml`.
|
||
|
|
||
|
## Dedicated Queues
|
||
|
|
||
|
Most workers should use their own queue. To ease this process a worker can
|
||
|
include the `DedicatedSidekiqQueue` concern as follows:
|
||
|
|
||
|
```ruby
|
||
|
class ProcessSomethingWorker
|
||
|
include Sidekiq::Worker
|
||
|
include DedicatedSidekiqQueue
|
||
|
end
|
||
|
```
|
||
|
|
||
|
This will set the queue name based on the class' name, minus the `Worker`
|
||
|
suffix. In the above example this would lead to the queue being
|
||
|
`process_something`.
|
||
|
|
||
|
In some cases multiple workers do use the same queue. For example, the various
|
||
|
workers for updating CI pipelines all use the `pipeline` queue. Adding workers
|
||
|
to existing queues should be done with care, as adding more workers can lead to
|
||
|
slow jobs blocking work (even for different jobs) on the shared queue.
|
||
|
|
||
|
## Tests
|
||
|
|
||
|
Each Sidekiq worker must be tested using RSpec, just like any other class. These
|
||
|
tests should be placed in `spec/workers`.
|