Продюсер делает LPUSH (или RPUSH), воркер блокирующе читает BRPOP/BLPOP с другого конца — classic reliable-enough queue при одном потребителе/списке.
Разбор
- Блокирующие pop снижают busy-wait.
- При падении воркера после pop задача теряется — для ack нужен другой паттерн (reliable queue: backup list, Streams).
- Несколько воркеров на одном List конкурируют за элементы.
- Ограничивайте длину (
LTRIM), иначе память растёт.
Пример
LPUSH jobs '{"id":1}'
BRPOP jobs 5
Итог
List+B*POP — простая очередь; для ack/retry обычно Streams.