Представьте себе простое приложение для знакомств, которое каждый день предоставляет вам потенциальную пару. Когда пользователи впервые регистрируются, происходит следующее:
Им отправляется электронное письмо: «Добро пожаловать в приложение для знакомств!»
Начинается индивидуальное задание по сопоставлению, чтобы найти им совпадение на день и отправить им электронное письмо: «У вас есть совпадение!»
Если я выберу массовую регистрацию нескольких тысяч человек, очередь заданий будет заполнена несколькими тысячами заданий как №1, так и №2. Важно, чтобы они получили электронное письмо сначала, прежде чем найти совпадение, так как в противном случае это может привести к путанице.
У меня есть -
# config/sidekiq.rb
:queues:
- high_priority
- default
- low_priority
Согласно этой странице, эти очереди должны обрабатываться в указанном порядке.
Как работает эта расстановка приоритетов? Опустошена ли вся очередь
high priority
перед выбором элемента из очередейdefault
илиlow_priority
? Или он просто проверяется чаще, позволяя одновременно обрабатывать некоторые задания с более низким приоритетом?В дополнение к пункту 1: есть ли способ гарантировать, что конкретный пользователь получит приветственное письмо до того, как получит соответствующее электронное письмо? Первый будет находиться в очереди
high_priority
, а второй — в очередиdefault
, но нет гарантии, что какая-либо очередь находится в определенном порядке для пользователей.
Спасибо!