Это неправильно запускать мою почтовую очередь в пуле приложений? - PullRequest
2 голосов
/ 14 марта 2012

Мы должны отправлять автоматические электронные письма.Они должны быть надежно отправлены, поэтому мы записываем их в базу данных.Одновременно System.Threading.Timer, который был запущен в Application_Start, каждые 30 секунд вызывает метод для чтения из базы данных и отправки, а затем удаления отправленных записей.Ничто из этого не происходит как длительная задача.Были предприняты меры для того, чтобы в процессе очистки очереди db использовались асинхронные методы, поэтому никакая фаза отправки / постановки в очередь никогда не блокируется, а весь процесс выполняется недолговечными методами в ThreadPool.Стоимость утилизации приложения также минимальна (возможно, это приводит к повторной отправке одного сообщения электронной почты ... не проблема).

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

Письменные услуги - это PITA.Я бы предпочел избежать этого, если это возможно.Так почему бы мне не запустить эффективную асинхронную почтовую очередь в моем пуле приложений?Может ли кто-нибудь просветить меня?

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Если ваш сайт не используется, ваш пул приложений не будет запущен - почта не отправляется.

1 голос
/ 14 марта 2012

Письменные услуги - это PITA

Полагаю, это субъективно.Тем не менее, вы не думаете, что было бы полезно поместить его в службу?В случае, если вы хотите изменить свою реализацию, в моем опыте намного проще поддерживать отдельные компоненты меньшего размера.Обычно это становится больше PITA, когда у вас все в одном месте.

Вы уже пишете электронные письма в базу данных.Очень просто написать простую службу Windows, которая просто сканирует базу данных и отправляет электронные письма.Я знаю, что это не может быть идеальным, но есть много примеров, плавающих на SO и в других местах.Вам не нужно все придумывать и использовать ESB (если вы этого не хотите).

Итак, в конце концов, только потому, что вы можете , не означает, что вы должны. Вы должны взвесить затраты и выгоды.

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