Очередь по умолчанию для новых отложенных заданий, использующих delayed_job_3? - PullRequest
3 голосов
/ 21 января 2012

Я использую несколько серверов heroku, которые совместно используют одну и ту же БД.Я хотел бы, чтобы каждый сервер обрабатывал только отложенные задания для сервера, который создал запись отложенных заданий.

Например:

Сервер A обрабатывает только очередь «server_a»

Сервер A обрабатывает только очередь «server_b»

и т.д ...

Это достигается с помощью отложенного задания 3 (https://github.com/collectiveidea/delayed_job)

Однако, чтобы это работало, мне нужно было бы вручную назначать имя очереди для каждого созданного отложенного задания, что может быть проблемой. (Например, объект.delay (: queue => 'tracking'). method)

Вместо этого я хотел бы иметь возможность назначить «очередь по умолчанию» для всех новых заданий. В идеале я должен поместить что-то вроде этого в delayed_job_config.rb & it работает:

DEFAULT_QUEUE_NAME = ENV ['APP_NAME']

... идея состоит в том, что я ничего не делаю с существующими отложенными заданиями, и им автоматически назначают очередь с тем же именемв качестве сервера приложений.

Я ищу предложения о том, как это сделать - или, если вы хотите нанести удар, добавьте немного кода в мою сторону.

Заранее спасибо!

1 Ответ

5 голосов
/ 21 марта 2013

В config/initializers/delayed_job.rb

Delayed::Worker.default_queue_name = `hostname`.chomp

...