Работают ли приоритеты между очередями / пробками в Бинстальке?
Я немного сбит с толку относительно того, работают ли приоритеты на уровне работы или очереди / уровня. Причина, по которой я спрашиваю, состоит в том, что я использую модуль интеграции beanstalkd в Drupal. Этот модуль позволяет определять очереди / трубы и назначать значение приоритета для каждой создаваемой очереди / трубы.
Я пытаюсь понять следующее. Допустим, у меня есть две очереди / трубки в Beanstalkd (очередь A и очередь B). Если элементы, назначенные очереди A, имеют более высокий приоритет, чем элементы в очереди B, означает ли это, что элементы в очереди B будут обрабатываться только тогда, когда очередь A пуста?
1 ответ
Приоритеты для каждой работы, вы можете узнать больше об этом по адресу: https://github.com/kr/beanstalkd/blob/master/doc/protocol.txt
Без рабочих приоритетов beanstalkd работает как очередь FIFO.
Есть три серьезных факта, которые нужно знать о рабочих приоритетах:
- Задания с номерами с более низким приоритетом резервируются перед заданиями с номерами с более высоким приоритетом.
- Приоритеты beanstalkd - это 32-разрядные целые числа без знака (они варьируются от 0 до 2 ^ 32 - 1).
- beanstalkd использует 2^31 в качестве приоритета задания по умолчанию (beanstalkd.DEFAULT_PRIORITY) (клиент может переопределить это, я видел значения по умолчанию, равные 1024).
Также обратите внимание, что в рамках одного и того же приоритетного задания все еще обрабатываются в режиме FIFO. Поэтому, если у вас есть агент, который просматривает несколько каналов, и когда вы получаете одинаковые приоритетные задания для этих каналов, они будут зарезервированы в FIFO-режиме.
Вы можете смотреть трубы и рабочие места с https://github.com/ptrofimov/beanstalk_console