Очередь по умолчанию для новых отложенных заданий с использованием delayed_job_3?

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

Например:

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

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

и т.д...

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

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

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

DEFAULT_QUEUE_NAME = ENV['APP_NAME']

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

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

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


person user1161653    schedule 20.01.2012    source источник