2012-01-20 3 views
3

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

Например:

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

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

и т.д ...

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

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

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

DEFAULT_QUEUE_NAME = ENV [ «»] APP_NAME

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

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

Заранее благодарен!

ответ

5

В config/initializers/delayed_job.rb

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

Смежные вопросы