Обратный вызов узла JS против очередей

#node.js #express

#node.js #экспресс

Вопрос:

В примере, когда веб-сайт электронной коммерции успешно принимает запрос на заказ, отправляется ответ с указанием номера заказа. После этого клиенту отправляется электронное письмо с информацией о заказе. Электронное письмо не обязательно должно быть мгновенным и может отправляться через некоторое время

Я использую Node JS (Express)

В таком случае, что лучше? 1) Отправить ответ. Выполнить код для отправки электронной почты 2) Поставить в очередь в какую-либо очередь (например, в AWS) и обработать ее позже

Хотя я знаю, что второй метод хорош, заставит ли первый пользователя продолжать ждать ответа? Что, если код отправки электронной почты был в каком-то обратном вызове? Или это два разных способа достижения одного и того же?

Комментарии:

1. Обратные вызовы не обязательно подразумевают асинхронное выполнение, так что да, если отправка электронного письма синхронна и потенциально требует много времени, попробуйте найти способ отделить его от HTTP-запроса-reaponse.

Ответ №1:

Это практически одно и то же. Если вы используете обратный вызов, который выполняется асинхронно, пользователю не придется ждать.

Постановка в очередь имеет смысл только в том случае, если есть некоторые проверки, которые необходимо выполнить перед подтверждением заказа, скажем, проверка в платежной системе, чтобы определить, верны ли платежные реквизиты.

Поскольку отправка электронной почты — это задача, с которой сервер может справиться без вызова каких-либо внешних API (проверка оплаты и т.д.), Если это все, что требуется, лучше обрабатывать обратным вызовом, а не очередью.