Files
2019-10-21 16:06:43 +04:00

2.2 KiB
Raw Permalink Blame History

Пример работы с SpringMail через SpringIntegration

В примере демонстрируется:

  • использование @Scheduled таймера для имитации пользовтельской активности
  • обработка доменных сущностей средствами SpringIntegration (@MessagingGateway, IntegrationFlow) с использованием route и subFlowMapping
  • создание и отправка email сообщений средствами SpringMail
  • аггрегация данных с помощью SpringData/JPQL
  • создание кастомного endpoint-а actuator-а для вывода статистики

Описание примера:

  • по таймеру UserActivityEmitterService достает из БД случайный тип активности и пользователя
  • после чего формирует из них объект активности (UserActivity) и отправляет в поток обработки с помощью UserActivityGateway
  • активности, у которых в названии типа есть вхождение "Вредн" помечаются, как важные соответствующим заголовком отправляемого сообщения
  • в потоке обработки (appUserActivityFlow) объект активности сохраняется в БД, а важные сообщения преобразуются в письма и отправляются на почту администратору
  • по таймеру ActivityStatCalculationEmitterSerivce инициирует подсчет статистики с помощью отправки сообщения в activityStatFlow через ActivityStatGateway
  • в данном потоке происходит удаление старых статистических данных, а так же подсчет и сохранение в БД новых
  • за вывод статистических данных отвечает кастомный endpoint actuator-а ActivityStatEndpoint