2015-10-01 3 views
0

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

  1. Им посылают письмо - «Приветствуем приложение знакомств!».

  2. Выполняется обычная подходящая работа, чтобы найти их в соответствие с днем ​​и отправил им электронное письмо - «У вас есть матч!».

Если я решила массово зачислить несколько тысяч человек, очередь заданий будет заполнена несколькими тысячами заданий как # 1, так и # 2. Очень важно, чтобы они получили по электронной почте сначала, прежде чем получить соответствие, так как в противном случае это создает путаницу.

меня -

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

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

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

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

Спасибо!

ответ

1

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

Смежные вопросы