Приоритизация вакансий на Sidekiq

Представьте себе простое приложение для знакомств, которое каждый день предоставляет вам потенциальную пару. Когда пользователи впервые регистрируются, происходит следующее:

  1. Им отправляется электронное письмо: «Добро пожаловать в приложение для знакомств!»

  2. Начинается индивидуальное задание по сопоставлению, чтобы найти им совпадение на день и отправить им электронное письмо: «У вас есть совпадение!»

Если я выберу массовую регистрацию нескольких тысяч человек, очередь заданий будет заполнена несколькими тысячами заданий как №1, так и №2. Важно, чтобы они получили электронное письмо сначала, прежде чем найти совпадение, так как в противном случае это может привести к путанице.

У меня есть -

# config/sidekiq.rb
:queues:
  - high_priority
  - default
  - low_priority

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

  1. Как работает эта расстановка приоритетов? Опустошена ли вся очередь high priority перед выбором элемента из очередей default или low_priority? Или он просто проверяется чаще, позволяя одновременно обрабатывать некоторые задания с более низким приоритетом?

  2. В дополнение к пункту 1: есть ли способ гарантировать, что конкретный пользователь получит приветственное письмо до того, как получит соответствующее электронное письмо? Первый будет находиться в очереди high_priority, а второй — в очереди default, но нет гарантии, что какая-либо очередь находится в определенном порядке для пользователей.

Спасибо!


person user2490003    schedule 01.10.2015    source источник


Ответы (1)


Каждый раз, когда Sidekiq ищет задание в Redis, он сначала проверяет high_priority, затем default, затем low_priority. Задания по умолчанию будут просто сидеть там, пока есть задания с высоким приоритетом.

person Mike Perham    schedule 01.10.2015
comment
Итак, если у меня установлен параллелизм 10 и 10 заданий находятся в состоянии занятости для очереди по умолчанию, и если новое задание будет добавлено в high_priority, то будет ли оно выбирать задание из очереди high_priority и приостанавливать эти 10 заданий? - person Sanjay Prajapati; 14.12.2020