Очередь писем в приложении MVC - PullRequest
0 голосов
/ 03 мая 2019

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

Наша платформа разворачивается через веб-приложение Azure и базу данных SQL Azure. Он написан на .NET MVC, и мы отправляем электронные письма через SMTP.

Есть ли у кого-нибудь рекомендации по наилучшей практике или каков наиболее эффективный способ добиться этого? Я изучил Azure Service Bus, сторонние решения с открытым исходным кодом (например, Hangfire) и пишу стандартное консольное приложение, которое обрабатывает таблицу базы данных отправляемых писем.

1 Ответ

0 голосов
/ 03 мая 2019

Вы на правильном пути. Сервисная шина Azure и функции Azure будут соответствовать вашим потребностям. Поток будет:

  1. Пользователь регистрируется
  2. Сообщение отправлено в очередь служебной шины
  3. Триггер функции Azure обрабатывает сообщение очереди и отправляет электронное письмо.

Привязки служебной шины Azure для функций Azure

Начало работы с очередями служебной шины

Если вы решите использовать Hangfire, было бы оптимальным использовать пакет Hangfire.Azure.ServiceBusQueue .

Добавлена ​​поддержка использования очередей служебной шины Azure с SQL Hangfire. поставщик хранилища, чтобы уменьшить время ожидания и устранить необходимость опроса база данных для новых рабочих мест.

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

...