Как вынести отправку писем из HTTP-запроса в фоновую очередь
Если регистрация ждёт ответа почтового сервиса, его задержка становится задержкой API. При сбое API может вернуть 500, хотя пользователь уже записан в базу. Повтор запроса грозит дублем аккаунта или письма.
API сохраняет пользователя, ставит задание на отправку письма в очередь и отвечает клиенту. Отдельный обработчик собирает HTML, отправляет письмо через почтовый сервис и повторяет попытку после временной ошибки с растущей паузой. Сбой сервиса тормозит обработчик, а не регистрацию.
В разборе freeCodeCamp есть пример на Node.js, BullMQ и Redis, а также правила для повторов и ошибок. Для регистрации подходит 201, если аккаунт создан и письмо поставлено в очередь; для запуска фоновой работы автор предлагает 202.
Если регистрация ждёт ответа почтового сервиса, его задержка становится задержкой API. При сбое API может вернуть 500, хотя пользователь уже записан в базу. Повтор запроса грозит дублем аккаунта или письма.
API сохраняет пользователя, ставит задание на отправку письма в очередь и отвечает клиенту. Отдельный обработчик собирает HTML, отправляет письмо через почтовый сервис и повторяет попытку после временной ошибки с растущей паузой. Сбой сервиса тормозит обработчик, а не регистрацию.
В разборе freeCodeCamp есть пример на Node.js, BullMQ и Redis, а также правила для повторов и ошибок. Для регистрации подходит 201, если аккаунт создан и письмо поставлено в очередь; для запуска фоновой работы автор предлагает 202.