Могу ли я создавать очереди восстановления на лету - PullRequest
5 голосов
/ 09 марта 2012

Я создаю многопользовательскую среду postgres. Таким образом, у клиента A есть схема_1, у B - схема_2 и т. Д.

Теперь я не знаю всех клиентов, которые у меня будут, поэтому у меня есть простая небольшая задача rake, чтобы создать новую схему на основе данных в таблице Tenant. Все совершенно динамично: добавить нового клиента добавьте нового арендатора и сделайте арендатора рейка: db: migrate .. tada все столы есть и у клиента есть свой маленький мир. (Неизвестный список, но небольшой, так что рейк при регистрации не проблема)

Все хорошо ...
За исключением фоновых заданий.
Я хочу иметь разные очереди для каждого клиента.

http://blog.kabisa.nl/2010/03/16/dynamic-queue-assignment-for-resque-jobs/ по-прежнему использует жестко закодированные очереди. Он может выбирать между двумя, о которых вы знали, когда писали код, но они все еще не очень динамичны. Не совсем.

Итак, мой вопрос. У меня есть строка «tenant_1», описывающая мир моих клиентов.
Как я могу использовать эту строку для создания очереди, содержащей задания только для «него».
Как я могу создать реальные динамические очереди?

Ответы [ 2 ]

8 голосов
/ 28 июня 2013

Если кто-нибудь сталкивался с этим вопросом, как я, я нашел ответ внутри источника.

Resque версия 1.x (стабильная) перечисляет это в /lib/resque.rb и выглядит как лучший метод для вызовачем прямой доступ к модулю Job внутри Resque.

 # This method is considered part of the `stable` API.
  def enqueue_to(queue, klass, *args)

Использование как таковое работает для меня безупречно.

Resque.enqueue_to(:my_queue, MyWorker, :my_argument)
4 голосов
/ 09 марта 2012

Resque :: Job.create ("client # {client_id}", MyWorker, 3);

Это работает для нас.

...