Resque: срочные задания, которые выполняются последовательно для каждого пользователя

Мое приложение создает задания восстановления, которые должны обрабатываться последовательно для каждого пользователя, и они должны обрабатываться как можно быстрее (максимальная задержка в 1 секунду).

Пример: job1 и job2 созданы для user1 и job3 для user2. Resque может обрабатывать job1 и job3 параллельно, но job1 и job2 должны обрабатываться последовательно.

У меня разные мысли для решения:

I could use different queues (e.g. queue_1 ... queue_10) and start a worker for each queue (e.g. rake resque:work QUEUE=queue_1). Users are assigned to a queue/ worker at runtime (e.g. on login, every day etc.) I could use dynamic "user queues" (e.g. queue_#{user.id}) and try to extend resque that only 1 worker can process a queue at a time (as asked in Resque: one worker per queue) I could put the jobs in a non-resque queue and use a "per-user meta job" with resque-lock (https://github.com/defunkt/resque-lock) that handles those jobs.

Есть ли у вас опыт применения одного из этих сценариев на практике? Или есть другие идеи, о которых стоит подумать? Буду признателен за любой вклад, спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос