Приоритетизиране на работни места в 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. Заданията по подразбиране просто ще стоят там, докато има задачи във high_priority.

person Mike Perham    schedule 01.10.2015
comment
Така че, ако имам зададена паралелност, 10 и 10 задания са в състояние на заетост за опашка по подразбиране и ако новата задача бъде добавена към high_priority, тогава ще избере ли работа от опашката с high_priority и ще постави тези 10 задачи в изчакване? - person Sanjay Prajapati; 14.12.2020