Является ли AWS SES асинхронным?

Я использую PHP с AWS SDK. У меня вопрос по поводу сервиса SES. Если я нажму письмо, которое будет отправлено в SES в том же процессе, что и другие части скрипта, который запускается. Например, отправка электронной почты напрямую через SES в рамках того же процесса, который обрабатывает регистрацию пользователей, будет ли процесс PHP блокироваться до тех пор, пока SES не завершит отправку электронной почты? Или SES входит во внутреннюю очередь сортировки и отправляет оттуда, как считает нужным?

Или разумнее отправить данные электронной почты в очередь SQS для обработки отправки через SES?

1

Решение

Ваш звонок в SES возвращается после того, как SES принял ваше сообщение.

Он не блокируется, пока SES не доставит сообщение.

SES пытается доставить сообщение быстро, но на самом деле будет повторять попытку до 12 часов, согласно «Сценарию 2» здесь: http://sesblog.amazon.com/post/Tx1S0ND7F4PCCGN/

Опционально, уведомления о доставке, сбоях и отказах возвращаются асинхронно (позже) через Simple Notification Service. http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html

1

Другие решения

В идеале у вас должна быть команда или другая функция, которая вызывается из фонового режима, а затем отправляет электронное письмо, чтобы не заставлять пользователя ждать во время процесса. Вы должны настроить прослушиватели, которые прослушивают зарегистрированное событие, а затем запускают событие в процессе регистрации, а затем обрабатывают задачи. Затем слушатели обработают событие. Где вы могли бы отправить электронное письмо или отправить в SQS, чтобы ваши рабочие машины могли отправлять электронную почту.

Вот хорошее видео о том, как сделать это, в наше время, не так, как люди сделали это 5 лет назад. https://laracasts.com/series/commands-and-domain-events

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

0