Транзакционные письма и SMS
Сообщения о регистрации, чеках и сбросе пароля ставятся в очередь веб-приложением и отправляются пулом воркеров.
Очереди FIFO, которые не теряют задачи, когда рабочий процесс умирает, с параллельной работой производителей и потребителей.
Любой сервис добавляет работу, не дожидаясь потребителей.
Анимированная демонстрация с настоящими командами HotKV и примерами ответов. Нажмите на любой шаг, чтобы перейти к нему. Команды и ответы остаются на английском, ровно так, как вы вводите и видите их в HotKV.
Фоновой работе, такой как письма, изменение размера изображений и вебхуки, нужна очередь между кодом, который её создаёт, и кодом, который её выполняет. Очередь, теряющая задачу при сбое воркера посреди работы, хуже отсутствия очереди, потому что никто не замечает, что задача пропала.
Списки дают простую очередь FIFO. BLMOVE перемещает каждую задачу в список обработки в момент передачи воркеру, так что задача в работе всегда где-то хранится, если этот воркер исчезнет. Производители и потребители обслуживаются параллельными рабочими потоками.
Любой сервис добавляет работу, не дожидаясь потребителей.
LPUSH queue:emails "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"BLMOVE блокируется, пока не появится задача, затем за один шаг перемещает её в список обработки.
BLMOVE queue:emails queue:emails:processing RIGHT LEFT 0Письмо ушло. Задача удаляется из списка обработки.
LREM queue:emails:processing 1 "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"Воркер 2 умирает посреди задачи. Его задача всё ещё в списке обработки, не потеряна.
LRANGE queue:emails:processing 0 -1Монитор возвращает брошенную задачу в очередь, и другой воркер подхватывает её.
LMOVE queue:emails:processing queue:emails LEFT RIGHTСообщения о регистрации, чеках и сбросе пароля ставятся в очередь веб-приложением и отправляются пулом воркеров.
Загрузки ставятся в очередь на создание миниатюр и перекодирование, и упавший перекодировщик никогда не теряет файл.
Исходящие вебхуки ставятся в очередь и повторяются, не блокируя запрос, который их вызвал.
LPUSH с BRPOP, и воркеры спят, пока не появится работа.
LPUSHBRPOPBLMOVE атомарно передаёт каждую задачу в список обработки.
BLMOVELREMПроизводители и потребители обслуживаются параллельными рабочими потоками.
Для подтверждений, групп потребителей и повторного воспроизведения используйте потоки.
XADDXREADGROUPЕсли вы берёте задачи через BLMOVE, задача остаётся в списке обработки. Монитор может вернуть в очередь всё, что пробыло там слишком долго.
Нет. BRPOP и BLMOVE блокируются, пока не придёт задача, с необязательным тайм-аутом.
Списки - самая простая очередь. Потоки добавляют группы потребителей, подтверждение каждого сообщения и историю. См. сценарий потоковой передачи событий.
HotKV понимает протокол Redis, поэтому вы можете подключить к нему существующий клиент и выполнить те же команды.