DennisKingsman
@DennisKingsman
Студент

Как отправлять email определяя необходимость отправки в runtime?

Здравствуйте, столкнулся с необходимостью отправлять эмайл оповещение с минимальными действиями пользователя.
Ситуация такая : условно есть какое то поле в бд которое может изменяться само по себе (имитация датчика) , как только значение датчика температуры становится критическим пользователю на майл приходит письмо, мол зайдите на сайт, отправьте инструкции.
В идеале это должно выполняться без каких либо действий со стороны пользователя.
Я нашел 2 варианта
1) https://o7planning.org/ru/11145/spring-email-tutorial с отправкой письма при переходе на какую то урлу (что было бы удобно учитывая секьюрный контекст спринга) тоесть для авторизированного пользователя мы всегда можем получить контекст, по которому в бд уже найдем самого пользователя и вытащим его майл, далее на этот майл отправим письмо .
Но тут, как видно пользователю нужно зайти на сайт, что не много не удовлетворяет требованию
2) https://www.baeldung.com/spring-email простая инициализация отправки в компоненте, я так понимаю выполнится один раз, но если мы будем постоянно инициализировать этот бин, то может выполняться с некой периодичностью .

С такой задачей сталкиваюсь впервые и как я это вижу : во время работы приложения некий компонент непрерывно проходит по всем пользователям, у каждого пользователя вытаскивает датчики и у каждого датчика проверяет значение
отправляет письмо, если надо , как дошел до конца засыпает на какое то время и потом по новой. Но это звучит слегка дорого, приходится тратить кучу памяти на то чтоб вынимать это все + кучу времени чтобы доставать это все. В общем думаю это не лучшем образом отразится на производительности.

Но есть же сервисы которые способны отсылать почту без действий пользователя, вот и прошу объяснить по какому принципу они это делают, заранее спасибо
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Не уверен, но если я правильно понимаю задачу, то вам по идее должны помочь Spring Email, @Scheduled для запуска по крону например, и @Async для асинхронной отправки. Но возможно, что есть варианты попроще
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Spring Integration поможет и с отслеживанием изменений в БД и с отправкой email.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы