Лучшие практики и соглашения заключаются в размещении только одного класса в одном файле с соответствующим именем файла. Не имеет значения, рабочий это или какой-либо другой класс. Если вы хотите упорядочить их, вы можете поместить похожих работников в модуль и переместить их в отдельную папку finance_worker
:
module FinanceWorker
class AnotherWorker
end
end
В этом случае вы можете позвонить FinanceWorker::AnotherWorker.perform_async
UPDATE:
Создайте отдельную папку finance_worker
внутри app/jobs
и переместите туда все необходимые рабочие файлы. Оберните все эти рабочие классы в module FinanceWorker
. Я имею в виду, обернуть отдельно, все еще в разных файлах, все еще only one class, wrapped in module, inside the file
.
Если у вас есть 10 работников, у вас есть 10 файлов для них. Но это работники Сидеки, а не герои, не путайте их. Чтобы запустить Sidekiq, вам нужна только одна строка в Procfile: worker: bundle exec sidekiq
. На этой строчке начнется 1 геройка рабочего дина для Сидекика, на котором запустят все его 10 работников. И это нормально, это обычная практика. Если вы заметили, что 1 дина для Sidekiq недостаточно, вы всегда можете добавить больше, они разделят очереди друг на друга.
И не забывайте, что вы можете указать имя очереди для работника. По умолчанию все задания отправляются в общую очередь default
. Если вы хотите, чтобы у работника была собственная очередь, просто добавьте к sidekiq_options
:
sidekiq_options retry: false, queue: 'finance'